使用EJB客户端jar的远程EJB访问

时间:2013-12-13 19:38:25

标签: java java-ee ejb weblogic ejb-3.0

我将一个EJB ear部署到Weblogic。 EJB有一些JMS队列设置,它按设计发送消息。 调用EJB的客户端Web应用程序在同一台计算机上的另一个JVM上运行(模仿远程调用)

EJB接口

@Remote
public interface MyLog {
    public void doSomething();
}

在客户端,

Maven依赖包括以下内容。我正在使用ejb jar本身。我如何生成ejb客户端jar以及两者之间有什么区别?

    org.ihc.myLog     myLog的EJB     1.0     罐

我正在使用spring查找ejb并且我正在使用ejb jar(不确定我是否完全理解ejb jar和ejb-client jar之间的区别)。

<bean id="myLog" parent="MyEjbParent" lazy-init="false">
   <property name="jndiName" value="MyLog#org.ihc.My.MyLog"/>
   <property name="businessInterface" value="org.ihc.audit.AuditLog"/>
   <property name="lookup-home-on-startup" value="false"/>
</bean>

我正在使用Spring DI将myLog连接到类的相应属性并执行我的操作。

myLog.doSomething();

问题在于,当我尝试部署调用EJB的Web应用程序时,部署失败,表示未在客户端应用程序服务器上设置JMS队列。我不明白为什么客户端应用服务器需要设置JMS队列,因为它们已经在运行EJB实例的Weblogic服务器上设置。客户端不应该只关心调用远程方法并让EJB做到这一点吗?可能是我的配置错了或其他什么?感谢。

以下是我在部署调用ejb的客户端Web应用程序时遇到的错误

|Exception while loading the app : EJB Container initialization error
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: JMS resource
not created : jms.mylog_queue

1 个答案:

答案 0 :(得分:1)

您的ejb客户端是否包含其中的ejbs或配置文件 或者它只包含接口类。 似乎您的客户端服务器也尝试初始化您的bean 确实没有必要。

尝试从服务器代码中分离客户端代码。您的客户只需要知道 远程接口和客户端服务器需要所有ejb-client依赖项 为了调用所有ejb遥控器 - &gt; rmi-iiop的东西。

由于评论更新:

创建一个单独的WEB项目。只需要调用依赖项 远程EJBS。在这种情况下,远程接口。 如果它是一个Web项目,而不仅仅是放入配置 此WEB项目所必需的,并将其部署为WAR文件,而不是JAR或EAR。