ejb-jar.xml env-entry枚举

时间:2012-12-12 16:12:36

标签: java glassfish ejb java-ee-6 ejb-jar.xml

这是我的ejb-jar.xml:

<?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>user@example.com</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;存档中的部署描述符文件WEB-INF / ejb-jar.xml [localgp-web-1.0-SNAPSHOT]。 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 个答案:

答案 0 :(得分:1)

NetBeans 7.2.1(现在最新版本)为EJB规范3.0版生成一个ejb-jar.xml,它不会将枚举识别为env-entry-type。将其更改为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>