我做了一个简单的项目来测试EJB3的实现。
使用maven我分别在项目3模块中创建了&#34; MyEjb&#34; EJB,&#34; MyWeb&#34; 战争<强大的&#34; MyWeb2&#34; 另一场战争。 war模块是EJB的客户端。
问题在于,当我部署EAR时,控制台说每个模块创建一个3个EJB上下文。 模块MyEjb的EJB上下文不在war模块之间共享,每个模块都从每个MyEjb依赖项中获取数据。
我必须在单独的JAR中创建EJB接口? 我使用Jboss作为应用程序服务器。
完整项目: https://github.com/AndreaCatania/EjbTest
这里是控制台:
[0m[0m09:32:18,735 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named TheNamer in deployment unit deployment "MyEjbs-1.0-SNAPSHOT.jar" are as follows:
java:global/MyEjbs-1.0-SNAPSHOT/TheNamer!com.andreacatania.test.RemoteNamer
java:app/MyEjbs-1.0-SNAPSHOT/TheNamer!com.andreacatania.test.RemoteNamer
java:module/TheNamer!com.andreacatania.test.RemoteNamer
java:jboss/exported/MyEjbs-1.0-SNAPSHOT/TheNamer!com.andreacatania.test.RemoteNamer
java:global/MyEjbs-1.0-SNAPSHOT/TheNamer
java:app/MyEjbs-1.0-SNAPSHOT/TheNamer
java:module/TheNamer
[0m[0m09:32:19,137 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-5) JNDI bindings for session bean named TheNamer in deployment unit deployment "MyWeb.war" are as follows:
java:global/MyWeb/TheNamer!com.andreacatania.test.RemoteNamer
java:app/MyWeb/TheNamer!com.andreacatania.test.RemoteNamer
java:module/TheNamer!com.andreacatania.test.RemoteNamer
java:jboss/exported/MyWeb/TheNamer!com.andreacatania.test.RemoteNamer
java:global/MyWeb/TheNamer
java:app/MyWeb/TheNamer
java:module/TheNamer
[0m[0m09:32:19,142 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named TheNamer in deployment unit deployment "MyWeb2.war" are as follows:
java:global/MyWeb2/TheNamer!com.andreacatania.test.RemoteNamer
java:app/MyWeb2/TheNamer!com.andreacatania.test.RemoteNamer
java:module/TheNamer!com.andreacatania.test.RemoteNamer
java:jboss/exported/MyWeb/TheNamer!com.andreacatania.test.RemoteNamer
java:global/MyWeb2/TheNamer
java:app/MyWeb2/TheNamer
java:module/TheNamer
答案 0 :(得分:0)
您需要过滤掉应该进入ejb-client模块的内容,而不是。如果您没有指定,那么客户端jar将与普通jar完全相同。实现此目的的一种简单方法是将您的接口放在名为api
的包中,并在客户端jar中包含与之匹配的内容。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<!--ejbVersion>3.1</ejbVersion-->
<generateClient>true</generateClient>
<clientIncludes>
<clientInclude>**/api/*</clientInclude>
</clientIncludes>
</configuration>
</plugin>