加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Tomcat 6,JPA和数据源

发布时间:2020-12-15 08:32:45 所属栏目:Java 来源:网络整理
导读:我正在尝试在我的jsf应用程序中使用数据源.我在web-apps context.xml中定义了数据源 web应用/ META-INF / context.xml的 ?xml version="1.0" encoding="UTF-8"?Context antiJARLocking="true" path="/Sale"Resource auth="Container" driverClassName="com.m
我正在尝试在我的jsf应用程序中使用数据源.我在web-apps context.xml中定义了数据源

web应用/ META-INF / context.xml的

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/Sale">
<Resource auth="Container" 
   driverClassName="com.mysql.jdbc.Driver" 
   maxActive="20" 
   maxIdle="10" 
   maxWait="-1" 
   name="Sale" 
   password="admin" 
   type="javax.sql.DataSource" 
   url="jdbc:mysql://localhost/sale" 
   username="admin"/>
</Context>

web.xml中

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
    30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/welcomeJSF.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>ruby</param-value>
</context-param>
</web-app>

和我的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="SalePU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<non-jta-data-source>Sale</non-jta-data-source>
<class>org.comp.sale.AnfrageAnhang</class>
<class>org.comp.sale.Beschaffung</class>
<class>org.comp.sale.Konto</class>
<class>org.comp.sale.Anfrage</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
</persistence-unit>
</persistence>

但是Tomcat似乎没有创建数据源,我只得到这个例外

Exception [TOPLINK-7060] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: Cannot acquire data source [Sale].
Internal Exception: javax.naming.NameNotFoundException: Name Sale is not bound in this Context

MySQL驱动程序所需的jar包含在WEB-INF / lib目录中.

我做错了什么?

解决方法

您的<非jta-data-source>促销< / non-jta-data-source>看起来不正确,你应该使用格式< non-jta-data-source> java:comp / env / ds / OracleDS< / non-jta-data-source> (至少这是我对文档的理解).

而且我实际上并不相信您的JDBC数据源JDNI资源是否已正确创建(因为您将jdbc驱动程序jar放在WEB-INF / lib中).从Tomcat文档:

Use of the JDBC Data Sources JNDI
Resource Factory requires that you
make an appropriate JDBC driver
available to both Tomcat internal
classes and to your web application.
This is most easily accomplished by
installing the driver’s JAR file(s)
into the $CATALINA_HOME/common/lib
directory,which makes the driver
available both to the resource factory
and to your application.

您应该首先测试它(通过编写快速代码进行查找以获得连接).

还严格遵循EclipseLink/Examples/JPA/Tomcat Web Tutorial中描述的步骤(并对齐web.xml,context.xml和persistence.xml的内容).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读