NetBeans 8.0.1忽略了glassfish-resources.xml文件?

5
我刚刚使用了NetBeans 8.0.1和GlassFish 4.1来处理两个旧项目,这两个项目之前在NetBeans 8.0和GlassFish 4.0上运行良好。现在(使用NetBeans 8.0.1),在部署项目时出现错误“tInvalid resource : jdbc/nameOfTheSource__pm”。JDBC资源和连接池是由glassfish-resources.xml定义的(当我使用“创建持久单元”和“新数据源”选项定义新实体时,NetBeans会生成该文件)。如果我直接在服务器上使用asadmin命令添加资源,则一切正常:连接池和JDBC资源已创建。因此,问题不是来自于该文件。似乎在部署期间忽略了glassfish-resources.xml文件。是否有人遇到过相同的问题(并有解释)?我的环境:NetBeans 8.0.1,GlassFish 4.1,Java DB 10.10.1.2 - (1495037)(来自Java 8.0)。相关问题:部署期间如何使用glassfish-resources?它未包含在EAR或WAR文件中。谢谢您的帮助。

2个回答

2

这是GlassFish的一个错误:https://netbeans.org/bugzilla/show_bug.cgi?id=243034

我通过@DatasourceDefinition在应用程序中定义我的数据源,而不是使用glassfish-resources.xml,但这只是一种解决数据源问题的方法,对于其他类型的资源并不适用。


这非常有趣!你如何使用@DataSourceDefinition?更详细的答案会很棒,但至少你给了一个起点! - Thufir
你可以在 EJB(或 servlet)上放置此注释。请参阅 http://docs.oracle.com/javaee/7/api/javax/annotation/sql/DataSourceDefinition.html。否则,您可以使用旧名称 sun-resources.xml,而不是使用 glassfish-resources.xml。 - user1643352

1
这是由于他们声称已经修复的NetBeans bug,但似乎他们并没有。作为解决方案,我最终放弃了glassfish-resources.xml,改用@DataSourceDefinition注释。

我的配置使用单独的DataSourceBean.java文件来进行@DataSourceDefinition操作:

@Singleton
@Startup
@DataSourceDefinition(name="java:global/jdbc/myDataSource",
    className="com.microsoft.sqlserver.jdbc.SQLServerDataSource",
    url="jdbc:sqlserver://127.0.0.1:1433;databaseName=myDB",
    user="myuser",
    password="mypassword"
)
public class DataSourceBean {
}

persistence.xml 的样子如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">
    <persistence-unit name="myUnit" transaction-type="JTA">
        <jta-data-source>java:global/jdbc/myDataSource</jta-data-source>
        <properties>
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
        </properties>
    </persistence-unit>
</persistence>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接