Невозможно развернуть войну в Weblogic - серверу не удалось разрешить не принадлежащие мне пути к classpath - PullRequest
0 голосов
/ 28 декабря 2010

У меня есть приложение Maven .war, для которого я использую Плагин Weblogic Maven для (отличный плагин, кстати), и я развертываю его на сервере Weblogic (конечно).К сожалению, я продолжаю получать сообщение об ошибке развертывания:

weblogic.deployment.EnvironmentException: [J2EE:160200]Error resolving ejb-ref 'com.vendor.thing.UsingHelloWorldEJB/h' from module 'myapp.war' of application 'myapp'. The ejb-ref does not have an ejb-link and the JNDI name of the target bean has not been specified. Attempts to automatically link the ejb-ref to its target bean failed because no EJBs in the application were found to implement the 'com.vendor.thing.HelloWorld' interface. Please link or map this ejb-ref to its target EJB and ensure the interfaces declared in the ejb-ref are correct.

Ха?

Этот HelloWorld EJB не является частью моего приложения и единственным местомчто я знаю, что этот класс существует для Weblogic, чтобы даже ссылаться на него в jar-файле classpath, который я использую в .war.Это поставщик .jar, поэтому имеет смысл иметь некоторые классы, о которых я не знаю или о которых я не знаю.В этом случае кажется, что они связали класс EJB с .jar, который я не могу удалить.

Почему?

Я не эксперт по Weblogic, поэтому такое поведение странномне.Является ли это стандартное поведение сервлета попыткой связать, а затем завершить неудачу развертывания .war на основе некоторых произвольных классов EJB, которые не являются частью моего .war (кроме как в виде API .jar в пути к классам)?

Как исправить?

Как я могу развернуть .war на сервере Weblogic?Я ничего не знаю об этом ejb-ref, и, похоже, это никак не влияет на работу моего приложения при локальном запуске с Jetty .Есть ли способ заставить Weblogic игнорировать все классы в этой .jar или области действия пакета?

EDIT 1

За ответ mhaller , я провел еще несколько исследований иобнаружил, что:

  • weblogic-maven-plugin использует .war, сгенерированный из maven-war-plugin, поэтому он не мешает генерации войны.
  • Тамникакие дополнительные дескрипторы развертывания (не weblogic.xml или аналогичные), кроме моего web.xml.
  • , вручную внедряющие .war, ведут себя не иначе, чем при использовании плагина maven (поэтому я думаю, что weblogic-maven-pluginне вызывает ошибку)

My web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   <servlet>
      <servlet-name>Jersey Web Application</servlet-name>
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
      <init-param>
         <param-name>com.sun.jersey.config.property.packages</param-name>
         <param-value>com.mypacakages.ws</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
      <!-- All web services will be under http://localhost:{port}/{context}/ws/ -->
      <servlet-name>Jersey Web Application</servlet-name>
      <url-pattern>/ws/*</url-pattern>
   </servlet-mapping>
</web-app>

1 Ответ

0 голосов
/ 28 декабря 2010
  • Проверьте, содержит ли окончательный файл .war дополнительные дескрипторы развертывания, которые вам не нужны. Я подозреваю, что maven-weblogic-plugin добавляет собственные дескрипторы развертывания.
  • Вместо этого используйте maven-war-plugin.
...