2013-09-12 5 views
0

Проблема: У меня есть ejb-jar-1.jar, который определяет EJB и объекты. Структура проекта приведена ниже. Во время развертывания все EJB успешно загружаются> запускаются, а их местоположения JNDI печатаются в файле журнала. В моем файле WAR есть класс, который должен получить доступ к запросу NAMED QUERY, определенному в Entity, который находится внутри ejb-jar-1.jar. Когда этот кусок кода запускается, он выдает исключение незаконногоArgumentException, поскольку NAMED QUERY не может быть найден. В другой заметке я также не могу получить ссылку на компоненты SEAM, которые были запущены при развертывании ejb-jar1.jar. Я напечатал дерево JNDI из файла app-war.war и у него нет ресурсов JNDI от ejb-jar-1.jar. Итак, я считаю, что это проблема контекста, в которой ресурсы JNDI, доступные в ejb-jar-1.jar, не видны из app-war.war.Невозможно получить доступ к компонентам шва в JAR из WAR в [JBOSS 7.1.1.FINAL и SEAM 2.2.1.CR2]

Любые предложения по доступу к ресурсам JNDI доступны в ejb-jar-1.jar от app-war.war?

Deployement информация

* JBOSS 7.1.1.FINAL 
* Uses seam framework: jboss-seam-2.2.1.CR2.jar 
* Uses Hibernate 3.4.0.GA 

основного ear.ear

|__META-INF 
| |____jboss-deployment-structure.xml 
| |____application.xml 
| |____jboss-app.xml 
| |____MANIFEST.MF 
|__lib 
| |____somejar.jar 
| |____somejar.jar 
|__ejb-jar-1.jar 
|__ejb-jar-2.jar 
|__jboss-seam-2.2.1.CR2.jar 
|__commons-lang-2.4.jar 
|__commons-codec-1.1.jar 
|__jasypt-1.6.jar 
|__app-war.war 

JBoss развертывания-structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> 
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated> 
    <deployment> 
     <exclusions> 
      <module name="javax.faces.api" slot="1.2"/> 
      <module name="com.sun.jsf-impl" slot="1.2"/> 
      <module name="org.hibernate" slot="main"/> 
      <module name="org.hibernate.validator" slot="main"/> 
      <module name="org.apache.commons.lang"/> 
      <module name="org.apache.commons.collections"/> 
      <module name="org.apache.commons.codec"/> 
      <module name="org.picketlink" slot="main"/> 
      <module name="org.picketbox" slot="main"/> 
      <module name="org.javassist" slot="main"/> 
      <module name="org.dom4j" slot="main"/> 
     </exclusions> 
     <dependencies> 
      <module name="javax.faces.api" slot="1.2" export="true"/> 
      <module name="com.sun.jsf-impl" slot="1.2" export="true"/> 
      <module name="org.javassist" slot="1" export="true"/> 
      <module name="org.apache.commons.logging" export="true"/> 
     </dependencies> 
    </deployment> 
    <sub-deployment name="app-war.war"> 
     <exclusions> 
      <module name="javax.faces.api" slot="main"/> 
      <module name="com.sun.jsf-impl" slot="main"/> 
     </exclusions> 
     <dependencies> 
      <module name="javax.faces.api" slot="1.2"/> 
      <module name="com.sun.jsf-impl" slot="1.2"/> 
      <module name="deployment.main-ear.ear.ejb-jar-1.jar" /> 
      <module name="deployment.main-ear.ear.ejb-jar-2.jar" /> 
      <module name="deployment.main-ear.ear.jboss-seam-2.2.1.CR2.jar"/> 
     </dependencies> 
    </sub-deployment> 
    <module name="deployment.main-ear.ear.jasypt-1.6.jar" /> 
    <module name="deployment.main-ear.ear.commons-codec-1.1.jar" /> 
    <module name="deployment.main-ear.ear.commons-lang-2.4.jar" /> 
</jboss-deployment-structure> 

application.xml

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns="http://java.sun.com/xml/ns/j2ee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/javaee/application_6.xsd" 
      version="6"> 
    <description>myapp</description> 
    <display-name>myapp</display-name> 
    <initialize-in-order>true</initialize-in-order> 
    <library-directory>lib</library-directory> 
    <module> 
     <ejb>ejb-jar-1.jar</ejb> 
    </module> 
    <module> 
     <ejb>ejb-jar-2.jar</ejb> 
    </module> 
    <module> 
     <ejb>jboss-seam-2.2.1.CR2.jar</ejb> 
    </module> 
    <module> 
     <web> 
      <web-uri>app-war.war</web-uri> 
      <context-root>/app</context-root> 
     </web> 
    </module> 
</application> 

ответ

0

Думайте, что вам нужно seam.properties в вашей банке в META-INF

+0

У меня уже есть 'seam.properties' в META-INF из' ejb-jar-1.jar' – ronsi

0

Бит поздно, но хорошо ... для EE6 вам нужно использовать синтаксис JNDI для переноски, например. добавьте следующие аннотации ко всем бобам во вторичном модуле

@JndiName("java:app/NameOfModule/NameOfBean")