从另一个EAR访问本地会话Bean?

| 如何从另一个EAR调用EAR中的Local Session Bean 部署在同一Glassfish v3域中? 结构如下:
Glassfish v3 Domain1

    EAR1
            EAR1-EJB.jar
                    class TestSessionBean           <-- @Stateless
            common.jar
                    interface TestSessionLocal      <-- @Local

    EAR2
            EAR2-EJB.jar
                    class TestSessionBeanClient     <-- @Singleton, @LocalBean
            common.jar
                    interface TestSessionLocal      <-- @Local
TestSessionBean实现TestSessionLocal,两个EAR都具有common.jar。 我需要使用TestSessionBeanClient中的TestSessionBean。我想拿 由于性能,本地会话bean的优势。 我知道我不能在TestSessionBeanClient中使用简单的@EJB调用,所以我尝试了 像这样查找:
InitialContext ic = new InitialContext();
TestSessionLocal tsl = ic.lookup(\"java:global/EAR1/EAR1-EJB/TestSessionBean!org.test.TestSessionLocal\");
这将引发ClassCastException,因为返回的对象将不会 TestSessionLocal但是一个代理类,例如:
TestSessionLocal_1389930137
为了能够调用其方法,我必须进行反射以找到其方法。 请帮忙。 先感谢您。     
已邀请:
根据EJB 3.1规范的3.2.2:   通过访问企业bean   只需要本地客户端视图   受本地客户支持   打包在同一应用程序中   作为提供   本地客户端视图。合规   本规范的实现   可以选择支持访问   企业的本地客户视图   来自本地客户端的Bean,打包在   不同的应用程序。的   的配置要求   应用程序间对本地的访问   客户视图是特定于供应商的,   不在此范围内   规格。依赖的应用   应用程序间对本地的访问   客户端视图是不可移植的。 这是GlassFish常见问题解答:我有一个带有Local接口的EJB组件。是否可以从其他应用程序中的Web组件访问它? (也就是说,您可以尝试打包接口,以便由两个应用程序都通用的ClassLoader来加载它。)     
您真的不想这样做。如另一个答案所述,它不需要被支持。有问题的许多原因之一是因为它可能导致类加载器问题。如果您的一只耳朵中有类而另一只耳朵中有类的引用,则可能会发生各种不良情况(例如,具有跨类加载器的引用,如果另一只耳朵重新部署,它将变得无效)。     
这是我在Stackoverflow上发布的第一条消息,但我承认我经常阅读它。顺便说一句,对不起我的英语。 我想我找到了解决此问题的替代解决方案: 我已经用@Remote注释了我的EJB,这是我的sun-ejb配置。 sun-ejb-jar.xml
  <ejb>
    <ejb-name>XXX</ejb-name>

    <ior-security-config>
        <transport-config>
            <integrity>required</integrity> 
            <confidentiality>required</confidentiality>
            <establish-trust-in-target>supported</establish-trust-in-target>
            <establish-trust-in-client>required</establish-trust-in-client>
        </transport-config>

        <sas-context>
            <caller-propagation>supported</caller-propagation>
        </sas-context>
    </ior-security-config>
  </ejb>
经过一些测试,似乎没有已知证书的客户端无法访问EJB。其他EAR无需任何身份验证即可访问此EJB。 编辑:我尝试了ClassLoader解决方案,但对我的项目不可行     

要回复问题请先登录注册