我刚刚将NetBeans 8.0.1和GlassFish 4.1用于2个与NetBeans 8.0和GlassFish 4.0配合良好的旧项目。
现在(使用NetBeans 8.0.1)在部署项目期间出现错误“tInvalid resource:jdbc / nameOfTheSource__pm”。
JDBC资源和连接池由glassfish-resources.xml定义(当我使用“创建持久单元”和“新数据源”选项定义新实体时由NetBeans生成)。
如果我通过命令add-resource of asadmin直接使用glassfish-resources,那么一切正常:创建了连接池和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文件中。
提前感谢您的帮助。
答案 0 :(得分:2)
这是GlassFish的错误:https://netbeans.org/bugzilla/show_bug.cgi?id=243034
我通过@DatasourceDefinition而不是使用glassfish-resources.xml在应用程序中定义我的数据源,但它只是一种数据源的解决方法,而不是其他类型的资源。
答案 1 :(得分:0)
这是由于https://www.youtube.com/watch?v=Z7ufbRuG9gY&list=PLgCYzUzKIBE-G0tuxjKGkl_keIW2FFwKX造成的,但似乎他们没有。作为解决方案,我最终也完全放弃了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>