我使用Wildfly 8,SDK 1.7和Intellij IDE并尝试制作基本的ejb服务器。
我制作了包含两个子模块的项目:interface和server。
接口:
package testing;
...
@Remote
public interface Test {
public void sayHi();
}
服务器:
package srv;
...
import testing.Test;
@Stateless
public class TestBean implements Test {
@Override
public void sayHi()
{
System.out.println("Hi");
}
}
两个模块的依赖关系为javax.ejb.jar
,服务器1的依赖关系为jboss-client
+ interface
。一切都很好。
所以,我试图将server:ejb
神器部署到Wildfly中,但它没有成功:
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."server_ejb.jar".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."server_ejb.jar".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of deployment "server_ejb.jar"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
...
Caused by: java.lang.LinkageError: Failed to link srv/TestBean (Module "deployment.server_ejb.jar:main" from Service Module Loader)
...
Caused by: java.lang.NoClassDefFoundError: testing/Test
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_67]
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) [rt.jar:1.7.0_67]
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361) [jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482) [jboss-modules.jar:1.3.3.Final]
... 19 more
怎么了?
答案 0 :(得分:1)
EJB JAR包含一个或多个EJB,包括它们的接口定义,EJB使用的任何相关Java类,以及描述这些EJB的部署描述符。
鉴于此例外:
Caused by: java.lang.NoClassDefFoundError: testing/Test
server_ejb.jar
不包括测试界面,您必须在部署中包含该界面。
我希望这有帮助。