java - JNDI creation in Apache Tomcat 7 using context.xml of application -
i trying create test application jndi below code along test servlet verify if connection established successfully. didn't make configuration settings on server.xml , context.xml assuming don't have them when configure context.xml in meta-inf of application
however, error "cannot create jdbc driver of class '' connect url 'null' "
i searched old issues, , of issues of similar error messages caused mistaken jdbc url. in case don't think it's problem jdbc url.
print stacktrace shows:
caused by: java.sql.sqlexception: no suitable driver @ java.sql.drivermanager.getdriver(drivermanager.java:315) @ org.apache.tomcat.dbcp.dbcp.basicdatasource.createconnectionfactory(basicdatasource.java:1437) ... 43 more
tried mysql jar file on lib directory of tomcat; it's still same. full stacktrace below:
info: server startup in 1116 ms org.apache.tomcat.dbcp.dbcp.sqlnestedexception: cannot create jdbc driver of class '' connect url 'null' @ org.apache.tomcat.dbcp.dbcp.basicdatasource.createconnectionfactory(basicdatasource.java:1452) @ org.apache.tomcat.dbcp.dbcp.basicdatasource.createdatasource(basicdatasource.java:1371) @ org.apache.tomcat.dbcp.dbcp.basicdatasource.getconnection(basicdatasource.java:1044) @ org.angelfrend.samples.standalonejndi.dao.testservlet.doget(testservlet.java:45) @ javax.servlet.http.httpservlet.service(httpservlet.java:624) @ javax.servlet.http.httpservlet.service(httpservlet.java:731) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.catalina.core.applicationdispatcher.invoke(applicationdispatcher.java:748) @ org.apache.catalina.core.applicationdispatcher.processrequest(applicationdispatcher.java:486) @ org.apache.catalina.core.applicationdispatcher.doforward(applicationdispatcher.java:411) @ org.apache.catalina.core.applicationdispatcher.forward(applicationdispatcher.java:338) @ org.apache.jasper.runtime.pagecontextimpl.doforward(pagecontextimpl.java:750) @ org.apache.jasper.runtime.pagecontextimpl.forward(pagecontextimpl.java:720) @ org.apache.jsp.index_jsp._jspservice(index_jsp.java:66) @ org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70) @ javax.servlet.http.httpservlet.service(httpservlet.java:731) @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:439) @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:395) @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:339) @ javax.servlet.http.httpservlet.service(httpservlet.java:731) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:505) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:956) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:423) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1079) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:625) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:316) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) @ java.lang.thread.run(thread.java:745) caused by: java.sql.sqlexception: no suitable driver @ java.sql.drivermanager.getdriver(drivermanager.java:315) @ org.apache.tomcat.dbcp.dbcp.basicdatasource.createconnectionfactory(basicdatasource.java:1437) ... 43 more
pom.xml
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>org.samples.dao</groupid> <artifactid>standalonejndi</artifactid> <packaging>war</packaging> <version>0.0.1-snapshot</version> <name>standalonejndi maven webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-dbcp2</artifactid> <version>2.1</version> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.36</version> </dependency> <dependency> <groupid>jstl</groupid> <artifactid>jstl</artifactid> <version>1.2</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-core</artifactid> <version>4.1.4.release</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-context</artifactid> <version>3.0.5.release</version> </dependency> <dependency> <groupid>javax.servlet</groupid> <artifactid>servlet-api</artifactid> <version>2.4</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalname>standalonejndi</finalname> </build> web.xml
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>servlet 2.4 web application</display-name> <description>mysql test</description> <servlet> <servlet-name>testservlet</servlet-name> <servlet-class>org.samples.testservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>testservlet</servlet-name> <url-pattern>/testservlet</url-pattern> </servlet-mapping> <resource-ref> <res-ref-name>jdbc/testdb</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> </resource-ref> context.xml ( placed in meta-inf folder of src/main/resources )
<context> <resource name="jdbc/testdb" auth="container" type="javax.sql.datasource" maxactive="100" maxidle="30" maxwait="10000" username="user" password="pass" driverclassname="com.mysql.jdbc.driver" url="jdbc:mysql://localhost:3306/javatest" /></context> can assist me on how works? can't create jndi connection without configuring server.xml or context.xml ??
Comments
Post a Comment