使用Hibernate在Weblogic 10.3上部署webservice的ClassNotFoundException

Vin*_*ius 2 java hibernate ejb java-web-start weblogic-10.x

我有一个实现JWS Webservice的EJB项目,如下所示:

@Stateless
@Remote(WebServiceTest.class)
@WebService(
 serviceName="TestService",
 name="TestName"
)
public class WebServiceTestImpl implements WebServiceTest {
 @Override
 @WebMethod(operationName="hello")
 public String hello() {
  return "Hello World!";
 }
}
Run Code Online (Sandbox Code Playgroud)

我使用简单的EAR项目在WebLogic 10.3上完美地部署和测试它.现在我需要在我的项目中使用Hibernate,所以从以前的经验我知道我必须使用Hibernate中的Antrl而不是容器,所以我在EAR项目中创建了一个weblogic-application.xml:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application ...>
 <wls:prefer-application-packages>
  <wls:package-name>antlr.*</wls:package-name>
 </wls:prefer-application-packages>
</wls:weblogic-application>
Run Code Online (Sandbox Code Playgroud)

现在,当我部署EAR时,我收到此错误:

Unable to deploy EJB: WebServiceTestImpl from test-1.0.0-SNAPSHOT.jar:

***** ASSERTION FAILED *****


 at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:467)
 at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
 at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:507)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
 at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:149)
 Truncated. see log file for complete stacktrace

Caused By: java.lang.ClassNotFoundException: test.WebServiceTestImpl_zd33dy_WSOImpl
 at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:280)
 at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:253)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:177)
 Truncated. see log file for complete stacktrace
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?如果我不把Antlr放在wls中:prefer-application-packages Hibernate将不起作用,如果我把它放在我无法部署web服务...

Kor*_*gen 6

即使您执行新的/更新部署,Weblogic也会以某种方式保留EJB的预编译版本.

这适用于wls 10.3.5:在域的服务器目录中(例如在我的情况下/ home/myUser/apps/bea/domains/myDomain/servers/AdminServer),有一个子文件夹"cache/EJBCompilerCache".停止您的weblogic实例并删除此子文件夹的内容.重新启动weblogic,一切都会正常工作:-)