我在 websphere 上设置了一个 web 应用程序,但是找不到 websphere 提供的数据源的 JNDI 名称。
我是 websphere 的新手,之前没有使用过 JDNI,我发现很难直接在这个应用程序上工作。
如何创建一个可以在 websphere 上运行并使用 websphere 提供的数据源的简单 Web 应用程序。或者有没有我可以尝试的现有演示?
我认为这样的应用程序将帮助我定位问题。
我在 websphere 上设置了一个 web 应用程序,但是找不到 websphere 提供的数据源的 JNDI 名称。
我是 websphere 的新手,之前没有使用过 JDNI,我发现很难直接在这个应用程序上工作。
如何创建一个可以在 websphere 上运行并使用 websphere 提供的数据源的简单 Web 应用程序。或者有没有我可以尝试的现有演示?
我认为这样的应用程序将帮助我定位问题。
如果您使用上下文查找,则必须在部署描述符 (web.xml) 中声明一个新的资源引用:
<resource-ref>
<res-ref-name>jdbc/newReference</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
但这还不是全部。您还必须将此新引用绑定到服务器的 JDBC 资源 (ibm-web-bnd.xml):
<resource-ref name="jdbc/newReference" binding-name="jdbc/ressourceOnServer"/>
请注意,此机制与使用 sun-web.xml 文件在 Glassfish 上所做的非常相似,只是绑定略有不同:
<resource-ref>
<res-ref-name>jdbc/newReference</res-ref-name>
<jndi-name>jdbc/ressourceOnServer</jndi-name>
</resource-ref>
看看这个问题:如何使用给定的 JNDI 名称连接到 Websphere 数据源?. 如果您需要更多详细信息,我可以举个例子。
当您在 websphere 中设置数据源时,系统会要求您提供所需的 JNDI 名称。据我所知,它通常类似于“jdbc/appname”。
然后,如果您使用 JPA,您只需将给定的名称放在您的 persistence.xml 文件中:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="appname" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>jdbc/appname</non-jta-data-source>
<!-- CLASS TO PERSIST -->
</persistence-unit>
</persistence>
我现在注意到我的应用程序中的数据源列为非 jta,尽管我相信 WebSphere 的数据源是 JTA 感知的。你可能想检查一下。
打开您的 Websphere 管理控制台。
单击资源>>数据源。
您将获得已配置数据源的列表。在列表中会有Default Datasource
. 点击那个。在配置表单中,有一个名为JNDI name
. 这是 Websphere 提供的默认数据源的 jndi 名称。
您可以使用注解注入在您的 Web 组件中注入 DataSource。
@Resource(name = "DefaultDatasource")
DataSource ds;
教程适用于 tomcat,但请参阅 servlet 示例和使用数据源作为注解注入 >> http://theopentutorials.com/tutorials/java-ee/servlet/servlet-datasource-resource-injection-in-tomcat/