2012-12-12 33 views
0

這是我的ejb-jar.xml中:ejb-jar.xml中ENV進入枚舉

<?xml version="1.0" encoding="UTF-8"?> 

<ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee" 
     version = "3.0" 
     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_0.xsd"> 

    <enterprise-beans> 
     <session> 
      <ejb-name>EmailEjb</ejb-name> 
      <env-entry> 
       <env-entry-name>java:app/env/smtp.host</env-entry-name> 
       <env-entry-type>java.lang.String</env-entry-type> 
       <env-entry-value>smtp.mandrillapp.com</env-entry-value> 
      </env-entry> 
      <env-entry> 
       <env-entry-name>java:app/env/smtp.port</env-entry-name> 
       <env-entry-type>java.lang.Integer</env-entry-type> 
       <env-entry-value>587</env-entry-value> 
      </env-entry> 
      <env-entry> 
       <env-entry-name>java:app/env/smtp.transportStrategy</env-entry-name> 
       <env-entry-type>org.codemonkey.simplejavamail.TransportStrategy</env-entry-type> 
       <env-entry-value>SMTP_TLS</env-entry-value> 
      </env-entry> 
      <env-entry> 
       <env-entry-name>java:app/env/smtp.username</env-entry-name> 
       <env-entry-type>java.lang.String</env-entry-type> 
       <env-entry-value>[email protected]</env-entry-value> 
      </env-entry> 
      <env-entry> 
       <env-entry-name>java:app/env/smtp.password</env-entry-name> 
       <env-entry-type>java.lang.String</env-entry-type> 
       <env-entry-value>foobar</env-entry-value> 
      </env-entry> 
     </session> 
    </enterprise-beans> 
</ejb-jar> 

在部署時,我得到這個異常:

org.xml.sax.SAXParseException; lineNumber:23; columnNumber:85;部署描述符文件存檔[localgp-web-1.0-SNAPSHOT]中的WEB-INF/ejb-jar.xml。 cvc-enumeration-valid:值'org.codemonkey.simplejavamail.TransportStrategy'在枚舉方面不是facet-valid ['java.lang.Boolean,java.lang.Byte,java.lang.Character,java.lang.String ,java.lang.Short,java.lang.Integer,java.lang.Long,java.lang.Float,java.lang.Double]'。它必須是枚舉中的值。

這似乎表明,儘管the documentation,枚舉是不允許的。或者是我可能錯過的其他事情?

回答

1

NetBeans 7.2.1(現在的最新版本)爲EJB規範的版本3.0生成ejb-jar.xml,該規範不承認枚舉爲env-entry-type s。將其更改爲版本3.1可解決此問題並正確注入資源。

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

    <!-- Stuff goes here. --> 

</ejb-jar>