我试图使用JTA数据源实例化EntityManager,但我总是得到NullPointerException。这是我的环境:服务器:JBossas7.0JPA:2.0DB:MySQL
坚持不懈xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="WebStock" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>stockmanagementDS</jta-data-source>
<class>prv.stockmanagement.business.Product</class>
</persistence-unit>
</persistence>
在dao类中,我尝试以下方法:
@PersistenceContext(type=PersistenceContextType.EXTENDED, unitName="WebStock")
private EntityManager em;
但是当我使用它的getter时,我在这里得到NullPointerExctive:
public EntityManager getEntityManager() {
return em;
}
调试显示它为空。
以下是standalone.xml中的数据源定义:
<datasource jndi-name="stockmanagementDS" pool-name="stockmanagement" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:mysql://localhost:3306/kitchen_stock
</connection-url>
<driver>
mysql
</driver>
<security>
<user-name>
root
</user-name>
<password>
rootroot
</password>
</security>
<statement>
<prepared-statement-cache-size>
100
</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
"mysql"是我在数据源之后定义的驱动程序的名称:
持久性在META-INF下,它是一个动态的web项目,并且运行良好。使用实体管理器的分类不是EJB。
有什么提示吗?
让我提请大家注意以下时刻:
1.我没有在您的代码驱动程序
中看到您引用的MySql:
<driver>
mysql
</driver>
你必须遵循:
输入文件路径${jboss_home}/modules并创建目录com/mysql/jdbc/main。将驱动程序库jar(例如mysql-connector-java-5.1.38-bin.jar)复制到主文件夹中,并创建一个文件模块。xml:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql.jdbc">
<resources>
<resource-root path="mysql-connector-java-5.1.38-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
和
<driver name="mysql" module="com.mysql.jdbc">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
2.也许你应该坚持下去。web模块中的xml:
web
src
main
java
..
resources
META-INF
persistence.xml
webapp
..
3.您可以只将
EntiryManeger
注入到EJB
或带有@Transactional
注释的类中。请检查以确保您的DAO类是EJB bean。
我在Tomcat中得到以下错误: 我已经在JBOSS和嵌入式tomcat服务器中运行了这个,但仍然出现了这个错误。我甚至从war中取出jar文件,并从JBOSS中运行它,仍然得到相同的错误。 我能够创建EntityMangers,但在创建它们之前,我得到了上面的错误。程序继续运行比抱怨类不是托管类型。但是,这些正在被扫描。 我在JBoss中得到了同样的错误: 第二数据源 application.y
创建数据源的基本步骤: 在工作区窗口中,点击 “新建数据源”。 输入数据源的名,然后选择所需的连接或现有的数据源。 点击“确定”。 一个选项卡将打开,让你编辑数据源。 将表或查询从连接窗格拖放到设计窗格。 将一个节点拖放到另一个节点以创建联接。 如有需要,请配置联接类型和联接字段。 【提示】创建联接后,你可以随时点击连接器上的联接图标来更改联接设置。 选择“实时”模式或“存档”模式。 点击“应用并
创建数据源的基本步骤: 在工作区窗口中,点击 。 输入数据源的名,然后选择所需的连接或现有的数据源。 点击“好”。 一个选项卡将打开,让你编辑数据源。 将表或查询从连接窗格拖放到设计窗格。 将一个节点拖放到另一个节点以创建联接。 如有需要,请配置联接类型和联接字段。 【提示】创建联接后,你可以随时点击连接器上的联接图标来更改联接设置。 选择“实实时”模式或“存档”模式。 点击“应用并刷新数据”来查
创建数据源的基本步骤: 在工作区窗口中,点击 “新建数据源”。 输入数据源的名,然后选择所需的连接或现有的数据源。 点击“确定”。 一个选项卡将打开,让你编辑数据源。 将表或查询从连接窗格拖放到设计窗格。 将一个节点拖放到另一个节点以创建联接。 如有需要,请配置联接类型和联接字段。 【提示】创建联接后,你可以随时点击连接器上的联接图标来更改联接设置。 选择“实时”模式或“存档”模式。 点击“应用并
我刚刚开始学习阿帕奇骆驼。我了解路线和组件的基本知识。现在,我想尝试连接到Oracle数据库,从一个特定表中读取记录,并使用组件将这些记录写入文件。为了从数据库中读取数据,我假设需要使用JDBC组件,并给出数据源名称。 但是,我找不到有关如何使用camel创建数据源的任何信息。我找到的与此主题相关的所有信息都使用了Spring DSL示例。我不使用Spring,我只需要使用简单的独立Java应用程
我安装了Oracle 19c数据库软件。我试图用脚本创建一个数据库;我创建了一个监听器和pfile(参数)文件。然后键入这个命令, -- 在此之后; -- 当我输入这些命令时,屏幕上只有“2”。然后,任何事情都不会发生。