1

我在 websphere 上设置了一个 web 应用程序,但是找不到 websphere 提供的数据源的 JNDI 名称。

我是 websphere 的新手,之前没有使用过 JDNI,我发现很难直接在这个应用程序上工作。

如何创建一个可以在 websphere 上运行并使用 websphere 提供的数据源的简单 Web 应用程序。或者有没有我可以尝试的现有演示?

我认为这样的应用程序将帮助我定位问题。

4

3 回答 3

4

如果您使用上下文查找,则必须在部署描述符 (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 数据源?. 如果您需要更多详细信息,我可以举个例子。

于 2013-04-25T07:01:29.077 回答
2

当您在 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 感知的。你可能想检查一下。

于 2013-04-22T08:50:21.177 回答
1

打开您的 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/

于 2013-04-24T10:18:40.497 回答