Java Websphere资源绑定
我们有一个项目,有相当多的依赖关系。我现在对Websphere资源绑定和资源定义感到困惑Java Websphere资源绑定,java,jakarta-ee,websphere,websphere-liberty,Java,Jakarta Ee,Websphere,Websphere Liberty,我们有一个项目,有相当多的依赖关系。我现在对Websphere资源绑定和资源定义感到困惑 ejb-jar.xml描述资源 persistence.xml描述数据库资源 我们可以有web.xml,在这里我们还描述了资源 我们可以使用ibm-web-bnd.xml,在这里我们可以对资源进行绑定 比如说,我有一个*.jar,它在persistence.xml(jta数据源)中定义了数据源,在ejb-jar.xml(enterprisebeans/session/resource ref)中定义了相同的
Unable to use JDBC Connection to create Statement
java.sql.SQLException: Unsupported use of GenericConnection. A
GenericConnection is provided during application start when creating an
EntityManagerFactory for a persistence unit which has configured one of its
datasource to be in the component naming context; java:comp/env. During
application start, the component naming context will not exist, and the
correct datasource cannot be determined. When the persistence unit is used,
the proper datasource and connection will be obtained and used.
问题:
...
<enterprise-beans>
<session id="MyEntityManagerBean">
<ejb-name>MyEntityManagerBean</ejb-name>
<ejb-class>somepackage.MyEntityManagerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref id="some_id_goes_here">
<res-ref-name>jdbc/my_ds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</session>
</enterprise-beans>
...
...
<session name="MyEntityManagerBean">
<resource-ref name="jdbc/my_ds" binding-name="jdbc/my_ds"/>
</session>
<session name="MyEntityManagerBean2">
<resource-ref name="jdbc/my_ds" binding-name="jdbc/my_ds"/>
</session>
...
当我将这个*.jar作为Maven依赖项添加到我的*.war中时,问题就开始了
提前感谢。资源引用并不定义数据源,它定义了对数据源的需求以及应用程序将用于查找数据源的名称。persistence.xml也是如此。您是否在Liberty server.xml中定义了数据源,或在web.xml或ejb jar.xml中定义了数据源元素?是的,我在server.xml.Attach中定义了这些xml的相关部分,因为您可能没有在persistence.xml中使用resource ref语法,或者存在一些错误配置。另外,在注入EntityManager的地方添加代码片段。完成后,请查看。
...
<session name="MyEntityManagerBean">
<resource-ref name="jdbc/my_ds" binding-name="jdbc/my_ds"/>
</session>
<session name="MyEntityManagerBean2">
<resource-ref name="jdbc/my_ds" binding-name="jdbc/my_ds"/>
</session>
...
@PersistenceContext(unitName="MyPersistentUnit")
protected EntityManager entityManager;