ClassNotFoundException при развертывании веб-службы в Weblogic 10.3 с помощью Hibernate - PullRequest
2 голосов
/ 24 сентября 2010

У меня есть проект с EJB, реализующим JWS Webservice, например:

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

Я отлично развернул и протестировал это в WebLogic 10.3, используя простой проект EAR.Теперь мне нужно использовать Hibernate в моем проекте, поэтому из предыдущего опыта я знаю, что мне нужно использовать Antrl из Hibernate, а не из контейнера, поэтому я создаю файл weblogic-application.xml в проекте EAR:

<?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>

Теперь, когда я развертываю 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

Как я могу решить эту проблему?Если я не добавлю Antlr в wls: предпочитаемое приложение-пакеты, Hibernate не будет работать, и если я его укажу, я не смогу развернуть веб-сервис ...

Ответы [ 3 ]

6 голосов
/ 26 апреля 2012

Weblogic каким-то образом сохраняет скомпилированные версии EJB, даже если вы делаете новое развертывание / обновление.

это работает для меня с wls 10.3.5: в каталоге сервера вашего домена (например, в моем случае / home/ myUser / apps / bea / domains / myDomain / servers / AdminServer) есть подпапка "cache / EJBCompilerCache".Остановите свой экземпляр weblogic и удалите содержимое этой подпапки.Перезапустите weblogic, и все будет работать: -)

2 голосов
/ 04 января 2011

Я не уверен, что это та же ошибка, но в Weblogic 10.3.0-2 есть известная ошибка, которая вызывает проблему при использовании JaxWS с EJB v 2.x.Но я получаю почти идентичную ошибку, когда помещаю аннотацию @WebService на EJB v 3.0 в Weblogic 10.3.1.Ошибка загружает то, что похоже на предположительно сгенерированные локальные заглушки, которые создает Weblogic, и происходит в Weblogic 10.3.0, 10.3.1, 10.3.2 и 10.3.3.(да, у меня действительно все они развернуты;)

0 голосов
/ 01 ноября 2010

У меня была проблема с развертыванием сессионного компонента и попыткой преобразовать его в веб-сервис. Кажется, WebLogic как-то кеширует сессионные компоненты.

Существует несколько решений этого:
- Переименовать slsb.
- Комментируйте аннотации @Stateless и @Remote, развертывайте приложение, раскомментируйте аннотации, повторное развертывание.
- Bounce WebLogic.

...