无法为连接 URL 'null' Tomcat 9,Oracle 12c,JDK 8,创建 class '' 的 JDBC 驱动程序,
Cannot create JDBC driver of class '' for connect URL 'null' Tomcat 9, Oracle 12c, JDK 8,
我有一个简单的 Web 服务正在尝试打开到数据库的连接。
我正在使用 jax-ws,Oracle 12c 数据库,Tomcat9,Java8.
任何人都可以 post 正确的方法吗?
到目前为止,我已经将 ojdbc7.jar 和 ucp.jar 下载到 $TOMCAT_HOME/lib 目录中。
- applicationPath/META-INF/web.xml 是什么?
现在我有以下内容:
<resource-ref>
<res-ref-name>jdbc/UCPPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
- TOMCAT_HOME/conf/server.xml 中的内容?
现在我有以下内容:
<context docbase="demods" path="/demods" reloadable="true">
<Resource
name="jdbc/UCPPool"
auth="Container"
factory="oracle.ucp.jdbc.PoolDataSourceImpl"
type="oracle.ucp.jdbc.PoolDataSource"
description="Pas testing UCP Pool in Tomcat"
connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource"
minPoolSize="2"
maxPoolSize="5"
inactiveConnectionTimeout="20"
user="test"
password="test"
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleDB12c)(PORT=1563))(CONNECT_DATA=(SERVICE_NAME=PPS)))"
connectionPoolName="UCPPool"
validateConnectionOnBorrow="true"
sqlForValidateConnection="select 1 from DUAL" />
</context>
TOMCAT_HOME/conf/context.xml 是什么?
我现在在这个文件中没有任何内容。
这是我用来设置 JDBC 连接的代码:
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/UCPPool");
Connection conn = null;
try {
conn = ds.getConnection();
}
catch (SQLException e) {
return e.getMessage();
}
网络服务返回的消息是:
"Cannot create JDBC driver of class '' for connect URL 'null'"
我做错了什么?
提前致谢!
你能看看 github example 并按照它来构建你的 Tomcat 应用程序吗?
好消息,我今天能够在办公室使用它。
这是我所做的:
- 我创建了一个 context.xml 文件并将其放在 META-INF/ 内的我的 eclipse 项目中。在 META-INF/context.xml 中,我输入了以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context>
<Resource
name="jdbc/orcljdbc_ds"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
username="user1"
password="password"
url="jdbc:oracle:thin:@//myoracledb:1563/DEVSID"
/>
</Context>
我没有在 Tomcat context.xml 或 server.xml 文件中放置任何内容,但我认为您可以针对不同的场景(i.e.Shared 具有多个应用程序的数据源 运行 在单个应用程序服务器上)。我也没有在我的 Eclipse 项目中放入任何东西 WEB-INF\web.xml.
我使用以下代码来测试连接:
package planAdminWS;
import javax.jws.WebMethod;
import javax.jws.WebService;
import java.io.PrintWriter;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
@WebService
public class PlanAdminWS {
@WebMethod
public String createPlan(String EIN, String PN)
{
return "Creating Plan: " + EIN + "/" + PN;
}
@WebMethod
public String updatePlan(String EIN, String PN) throws NamingException, SQLException {
// Get a context for the JNDI look up
DataSource ds = getDataSource();
Connection conn = null;
try {
conn = ds.getConnection();
if (conn != null) {
Statement stmt = null;
ResultSet rs = null;
String query = "select * from V$version";
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getString(1));
return "Database Version : " + rs.getString(1);
}
} else {
return "Conn is NULL";
}
} catch (SQLException e) {
return e.getMessage();
}
return "Could not get DB Version";
}
/*
* Method to create a datasource after the JNDI lookup
*/
private DataSource getDataSource() throws NamingException {
Context ctx;
ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
// Look up a data source
javax.sql.DataSource ds
= (javax.sql.DataSource) envContext.lookup ("jdbc/orcljdbc_ds");
return ds;
}
}
这在 SoapUI 中返回了以下内容:
"Database Version : Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production"
感谢帮助!!!
这是另一个很好的资源:https://www.journaldev.com/2513/tomcat-datasource-jndi-example-java
我有一个简单的 Web 服务正在尝试打开到数据库的连接。
我正在使用 jax-ws,Oracle 12c 数据库,Tomcat9,Java8.
任何人都可以 post 正确的方法吗?
到目前为止,我已经将 ojdbc7.jar 和 ucp.jar 下载到 $TOMCAT_HOME/lib 目录中。
- applicationPath/META-INF/web.xml 是什么?
现在我有以下内容:
<resource-ref>
<res-ref-name>jdbc/UCPPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
- TOMCAT_HOME/conf/server.xml 中的内容?
现在我有以下内容:
<context docbase="demods" path="/demods" reloadable="true">
<Resource
name="jdbc/UCPPool"
auth="Container"
factory="oracle.ucp.jdbc.PoolDataSourceImpl"
type="oracle.ucp.jdbc.PoolDataSource"
description="Pas testing UCP Pool in Tomcat"
connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource"
minPoolSize="2"
maxPoolSize="5"
inactiveConnectionTimeout="20"
user="test"
password="test"
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleDB12c)(PORT=1563))(CONNECT_DATA=(SERVICE_NAME=PPS)))"
connectionPoolName="UCPPool"
validateConnectionOnBorrow="true"
sqlForValidateConnection="select 1 from DUAL" />
</context>
TOMCAT_HOME/conf/context.xml 是什么?
我现在在这个文件中没有任何内容。
这是我用来设置 JDBC 连接的代码:
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/UCPPool");
Connection conn = null;
try {
conn = ds.getConnection();
}
catch (SQLException e) {
return e.getMessage();
}
网络服务返回的消息是:
"Cannot create JDBC driver of class '' for connect URL 'null'"
我做错了什么?
提前致谢!
你能看看 github example 并按照它来构建你的 Tomcat 应用程序吗?
好消息,我今天能够在办公室使用它。
这是我所做的:
- 我创建了一个 context.xml 文件并将其放在 META-INF/ 内的我的 eclipse 项目中。在 META-INF/context.xml 中,我输入了以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context>
<Resource
name="jdbc/orcljdbc_ds"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
username="user1"
password="password"
url="jdbc:oracle:thin:@//myoracledb:1563/DEVSID"
/>
</Context>
我没有在 Tomcat context.xml 或 server.xml 文件中放置任何内容,但我认为您可以针对不同的场景(i.e.Shared 具有多个应用程序的数据源 运行 在单个应用程序服务器上)。我也没有在我的 Eclipse 项目中放入任何东西 WEB-INF\web.xml.
我使用以下代码来测试连接:
package planAdminWS;
import javax.jws.WebMethod;
import javax.jws.WebService;
import java.io.PrintWriter;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
@WebService
public class PlanAdminWS {
@WebMethod
public String createPlan(String EIN, String PN)
{
return "Creating Plan: " + EIN + "/" + PN;
}
@WebMethod
public String updatePlan(String EIN, String PN) throws NamingException, SQLException {
// Get a context for the JNDI look up
DataSource ds = getDataSource();
Connection conn = null;
try {
conn = ds.getConnection();
if (conn != null) {
Statement stmt = null;
ResultSet rs = null;
String query = "select * from V$version";
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getString(1));
return "Database Version : " + rs.getString(1);
}
} else {
return "Conn is NULL";
}
} catch (SQLException e) {
return e.getMessage();
}
return "Could not get DB Version";
}
/*
* Method to create a datasource after the JNDI lookup
*/
private DataSource getDataSource() throws NamingException {
Context ctx;
ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
// Look up a data source
javax.sql.DataSource ds
= (javax.sql.DataSource) envContext.lookup ("jdbc/orcljdbc_ds");
return ds;
}
}
这在 SoapUI 中返回了以下内容:
"Database Version : Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production"
感谢帮助!!!
这是另一个很好的资源:https://www.journaldev.com/2513/tomcat-datasource-jndi-example-java