我正在重建我的开发环境,我无法让JDBC工作。我在Eclipse Java EE Mars.2下运行Tomcat 7并使用mysql-connector-java。 Linux Mint 17.2。我升级到最新的一堆东西,但我认为不是这样。
当我在Eclipse下启动Tomcat服务器时,我会继续获取以下内容。我不是在这台机器上单独运行它。就在Eclipse之下。
SEVERE:
Servlet.service() for servlet [jsp] in context with path [] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.lang.NullPointerException"] with root cause
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.lang.NullPointerException"
我认为这意味着找不到驱动程序?所有文件结构都与我的旧PC相同。 IDE并没有抱怨任何遗漏。就在我尝试启动服务器的时候。
我将mysql-connector-java-5.1.39-bin.jar
添加到Tomcat / lib文件夹中。具体来说:/opt/apache-tomcat-7.0.69/lib
。我确保服务器正在引用该文件夹。我还确保它不在webapp的lib文件夹中。这就是我以前一直这样做的。
我认为这是一个司机的事情。但也许不是吗?有人可以建议一个好的方法来调试这个吗?因为,我很难过......
META-INF/context.xml
与以前的环境一样。密码正确,可以从IDE连接没问题。
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/mydbdb"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
validationQuery="SELECT /* ping */" validationInterval="30000"
timeBetweenEvictionRunsMillis="30000"
maxActive="100" minIdle="10" maxWait="10000" initialSize="10"
removeAbandonedTimeout="600" removeAbandoned="true" logAbandoned="true"
minEvictableIdleTimeMillis="30000"
jmxEnabled="true"
username="user" password="password"
useUnicode="true" useEncoding="true" characterEncoding="UTF-8"
url="jdbc:mysql://localhost:3306/mydb?useOldAliasMetadataBehavior=true&zeroDateTimeBehavior=convertToNull"
/>
<Resource name="mail/MailSession"
auth="Container"
type="javax.mail.Session"
mail.smtp.auth="false"
mail.smtp.host="localhost"
/>
</Context>
答案 0 :(得分:1)
我非常尴尬地承认我忘了从旧环境中复制web.xml文件...... Doh!坐得这么近......有时你看不到森林里的树木。
答案 1 :(得分:0)
如果您在Eclipse下双击Tomcat实例,它将转到服务器的设置,然后您可以从中选择&#34; Open Launch Configuration&#34;选项,您可以将驱动程序jar添加到引导程序类路径中。
那就是说,我不认为这个问题是一个缺失的驱动因素,因为这通常会导致#34; Class not found&#34;例外。仔细检查您的日志,确保您没有收到任何错误。我假设您让Tomcat打开您的数据库连接以创建数据源。您似乎没有在Tioomcat server.xml和context.xml中配置数据源,因此在尝试使用它时,您的servlet会抛出空指针异常。