2013-10-23 39 views
1

當試圖在glassfish 4.0中(使用netbeans 7.3.1)部署mavenized企業應用程序(包括war和jar項目)時,我遇到了與this question類似的問題, jar無效,因爲它包含零ejb(這是不正確的,因爲我的應用程序jar包含4個實體類與他們對應的會話bean和本地接口)。如該職位的解決辦法是添加ejb-jar.xml中的話,我也做了同樣加入我的deployement描述寫成如下:在ejb-jar.xml中缺少值

<?xml version="1.0" encoding="UTF-8"?> 
    <ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee" 
     version = "3.1" 
     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/ejb-jar_3_1.xsd"> 


    <enterprise-beans> 

     <session> 
      <ejb-name>EnginDao</ejb-name> 
      <ejb-class>com.crystaleez.dao.EnginDao</ejb-class> 
      <session-type>Stateless</session-type> 
      <transaction-type>Container</transaction-type> 
     </session> 

     <session> 
      <ejb-name>AdresseDao</ejb-name> 
      <ejb-class>com.crystaleez.dao.AdresseDao</ejb-class> 
      <session-type>Stateless</session-type> 
      <transaction-type>Container</transaction-type> 
     </session> 

     <session> 
      <ejb-name>AutomobilisteDao</ejb-name> 
      <ejb-class>com.crystaleez.dao.AutomobilisteDao</ejb-class> 
      <transaction-type>Container</transaction-type> 
      <session-type>Stateless</session-type> 
     </session> 

     <session> 
      <ejb-name>GaragisteDao</ejb-name> 
      <ejb-class>com.crystaleez.dao.GaragisteDao</ejb-class> 
      <transaction-type>Container</transaction-type> 
      <session-type>Stateless</session-type> 
     </session> 


    </enterprise-beans> 


</ejb-jar> 

所以我得到了下面的異常話說,部署在此異常發生的歷史應用程序中,ejb-jar.xml具有無效內容,並且其中一個值'{「http://java.sun.com/xml/ns/javaee」:攔截器,「http://java.sun.com/xml/ns/javaee」:關係,「http://java.sun.com/xml/ns/javaee」:程序集描述符,「http://java.sun.com/xml/ns/javaee」:ejb-client-jar }'預計(對我來說它是法語,我沒有找到一種方法來改變netbeans中的glassfish日誌記錄)

Grave:異常應用程序 [tunmecanique-ear-1.0-SNAPSHOT]:org.xml.sax.SAXParseException; lineNumber:16; columnNumber:24;發明名稱爲 déploiementMETA-INF/ejb-jar.xml dans l'archive [tunmecanique-ejb-1.0-SNAPSHOT_jar]。 cvc-complex-type.2.4.a:Contenu non validetrouvéàpartir de l'élément'enterprise-beans'。 L'UNE DES valeurs '{ 「http://java.sun.com/xml/ns/javaee 」:攔截器, 「 http://java.sun.com/xml/ns/javaee 」:關係, 「 http://java.sun.com/xml/ns/javaee 」:裝配描述符, 「 http://java.sun.com/xml/ns/javaee」:EJB客戶端-JAR}' EST attendue。 org.xml.sax.SAXParseException; lineNumber:16; columnNumber:24; Fichier des Descripteur dedéploiementMETA-INF/ejb-jar.xml dans l'archive [tunmecanique-ejb-1.0-SNAPSHOT_jar]。 cvc-complex-type.2.4.a :Contenu non validetrouvéàpartir de l'élément'enterprise-beans'。 L'UNE DES valeurs '{ 「http://java.sun.com/xml/ns/javaee 」:攔截器, 「 http://java.sun.com/xml/ns/javaee 」:關係, 「 http://java.sun.com/xml/ns/javaee 」:組件描述符, 「 http://java.sun.com/xml/ns/javaee」:EJB-客戶罐}' EST attendue。在 com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:324) 在 com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:245) 在 融爲一體。 sun.enterprise.deployment.archivist.Archivist.readStandardDeploymentDescriptor(Archivist.java:665) 在 com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:391) 在 com.sun.enterprise。 deployment.archivist.Archivist.open(Archivist.java:271) at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:280) at com.sun.ente rprise.deployment.archivist.ApplicationArchivist.readModulesDescriptors(ApplicationArchivist.java:611) 在 com.sun.enterprise.deployment.archivist.ApplicationArchivist.openWith(ApplicationArchivist.java:229) 在 com.sun.enterprise.deployment。 archivist.ApplicationFactory.openWith(ApplicationFactory.java:232) 在 org.glassfish.javaee.core.deployment.DolProvider.processDOL(DolProvider.java:188) 在 org.glassfish.javaee.core.deployment.DolProvider。 (DolProvider.java:222) at org.glassfish.javaee.core.deployment.DolProvider。負載(DolProvider.java:96) 在 com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:878) 在 com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle。 java:818) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:374) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 在 org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)com.sun.enterprise.v3.admin.CommandRunnerImpl $ 2 $ 1.run(CommandRunnerImpl.java:527) 在 在 com.sun.enterprise.v3.admin.CommandRunnerImpl $ 2 $ 1.run(CommandRunnerImpl.java:523) at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject。 Java的:356)在 com.sun.enterprise.v3.admin.CommandRunnerImpl $ 2.execute(CommandRunnerImpl.java:522)

我沒有任何這些價值觀對我的項目(其實我不t知道什麼是攔截器,也不是由異常說的其他必需的值)(我不知道爲什麼ejb-jar.xml是強制性的,爲什麼沒有辦法自動生成它)我只需要讓我的項目成功部署。

感謝您的幫助!

回答

0

問題可能是您在最後兩次聲明中對session-typetransaction-type有不同的訂單。嘗試以下操作:

<session> 
     <ejb-name>AutomobilisteDao</ejb-name> 
     <ejb-class>com.crystaleez.dao.AutomobilisteDao</ejb-class> 
     <session-type>Stateless</session-type> 
     <transaction-type>Container</transaction-type> 
    </session> 

    <session> 
     <ejb-name>GaragisteDao</ejb-name> 
     <ejb-class>com.crystaleez.dao.GaragisteDao</ejb-class> 
     <session-type>Stateless</session-type> 
     <transaction-type>Container</transaction-type> 
    </session> 
+1

我做了你告訴我的,不幸的是它不是這個原因 – Bardelman