我有一个由许多模块组成的JavaEE应用程序。我试图能够进行间接的JNDI查找。
我遵循以下步骤:
ejb jar。xml:在每个模块中。我定义了一个企业bean。模块中的所有DAO都继承自此DAO(MyDataAccessObject)
<enterprise-beans>
<session>
<ejb-name>DataAccessObject</ejb-name>
<ejb-class>com.mycompany.dao.MyDataAccessObject</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref id="MyRef">
<description />
<res-ref-name>jdbc/My_db</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>
persistence.xml:我在每persistence.xml中定义(在每个模块中)
<jta-data-source>java:comp/env/jdbc/My_db</jta-data-source>
ibm应用程序bnd。xml
<resRefBindings xmi:id="MyRef" jndiName="jdbc/My_db">
?????? Should I use resRefBindings. If yes, how?
</resRefBindings>
我应该在WebSphere知道的java文档中添加什么:comp/env/jdbc/My_db?
我已经做的够了吗?
目前我得到这个错误,如果我想启动应用程序:
The server cannot locate the java:comp/env/jdbc/my_db data source for the My_Modul persistence unit because it has encountered the following exception:
Name comp/env/jdbc not found in context "java:".
编辑:我在一个事件文件中也发现了这个错误:
Caused by: <openjpa-2.1.2-SNAPSHOT-r422266:1384519 fatal user error> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:76)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:844)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:602)
at org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1510)
您使用的XMI绑定(resRefBindings)在WAS 7.0中受支持,但被认为已经过时。建议使用XML绑定。在META-INF
中,应该有一个名为ibm ejb jar bnd的文件。包含以下内容的xml
:
<ejb-jar-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" version="1.0">
<session name="DataAccessObject">
<resource-ref name="**datasource_ref_in_your_EJB**" binding-name="jdbc/My_db"/>
</session>
</ejb-jar-bnd>
我还假设您已经在WAS中配置了JNDI名称为“jdbc/My_db”的数据源。
我正在开发一个Java Web应用程序,并将其部署在Websphere Application Server中,
我正在开发一个使用tomcat服务器管理的连接池的spring应用程序。 我在上下文中的标记中定义了数据源。tomcat的xml:(我在上下文中使用Spring2.0.7)。xml: 在我的应用程序上下文中。xml(即在spring配置文件中),代码为: 当应用程序启动时,出现以下错误: 请帮我解决这个问题。
问题内容: 我一天中花了太多时间试图找出一些连接JNDI工厂bean的错误。问题原来是,而不是这个… 我实际上已经写过了… 我推断也许引用了一些环境变量并使之生效,以便最终查看我的上下文文件。唯一的区别是。从专家的口中,这是做什么的? 在值中没有前缀的情况下,我将收到一条错误消息,指出“名称jdbc在此上下文中未绑定”。 问题答案: 在名称空间的根上下文中是名称为“ comp”的绑定,该绑定绑定到
问题内容: 什么意思? 看起来像什么: 怎么办? 我了解查询如下: 在或中查找名称,以获取数据库的URL。 _是这样吗 ?!! _但是,前者看起来如何? 问题答案: 是JNDI树中的节点,您可以在其中找到当前Java EE组件(Web应用程序或EJB)的属性。 允许定义直接指向此节点的变量。它允许做 而不是 相对路径而不是绝对路径。这就是它的用途。
具有以下内容的EAR: META-INF/MANIFEST. MF META-INF/application.xml META-INF/glassfish-resources.xml META-INF/wildfly-ds.xml actionbazaar-chapter3-client.jar actionbazaar-chapter3-ejb.jar actionbazaar-chapter3
我已经创建了一个数据库:Compaction.mdb,并将其添加到用户DNS:“adm”中。当我试图通过java程序访问它时,我使用以下代码连接数据库 class.forname(“sun.jdbc.odbc.jdbcodbcdriver”); 连接con=DriverManager.getConnection(“jdbc:odbc:adm”); 它运行正常,程序可以访问数据库。但是,当我试图在s