一直在努力在 Tomcat 中为应用程序设置数据源。我采取的步骤是
使用以下内容创建 META-INF/context.xml
<Context> <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6" username="foo" password="foobar" maxActive="20" maxIdle="30" maxWait="-1" /> </Context>
在 WEB-INF/web.xml 中输入以下文本
<resource-ref> <description>Datasource</description> <res-ref-name>jdbc/mydb</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
在代码中使用它
public class MyServlet extends HttpServlet { private DataSource ds; public void init() { try { Context ctx = new InitialContext(); ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mydb"); } catch (NamingException e) { e.printStackTrace(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //this is where the exception is thrown Connection conn = ds.getConnection(); //...do stuff with the connection }
但是继续出现以下错误
“映射期间遇到异常。错误:无法创建 PoolableConnectionFactory(ORA-01017:无效的用户名/密码;登录被拒绝) org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory(ORA-01017:无效的用户名/密码;登录拒绝”
我知道用户名和密码是正确的。因为下面的代码有效
Class.forName("oracle.jdbc.OracleDriver").newInstance();
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "foo", "foobar");
我什至尝试输入无效的网址,但仍然出现相同的错误。这是怎么回事???
此外,Tomcat 是否有某种类似于 WebLogic 或 Glassfish 的数据源测试方法?