我已将我的localhost实现移动到另一台服务器并尝试使用另一台mySQL DB。
但是当我正在做
时,我得到一个空指针异常 dataSource.getConnection();
* 我的jdbc驱动程序有问题吗? *
堆栈追踪:
java.lang.NullPointerException
testProject.resources.ItemsResource.getItemsBrowser(ItemsResource.java:79)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:616)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
代码:
// For the browser
@GET
@Produces(MediaType.TEXT_XML)
public Item getItemHTML() {
java.sql.Connection connection;
java.sql.Statement statement;
Item item = null;
ResultSet resultSet = null;
try {
connection = dataSource.getConnection();
statement = connection.createStatement();
String query = "SELECT * FROM ITEMS WHERE itemID = " + id ;
resultSet = statement.executeQuery(query);
第78行是connection = dataSource.getConnection();
非常感谢
答案 0 :(得分:0)
java:comp / env是Java EE服务器命名空间。 jdbc / fyproj是在上下文文件中定义的数据源名称。
在app server启动时,它会加载上下文文件并创建使用上下文文件中指定的jndi字符串和数据库详细信息定义的数据源。
如果要使用数据源,则需要使用JNDI字符串(它是数据源绑定的服务器JNDI空间(java:comp / env)和定义的数据源名称(jdbc / fyproj))的组合。
上下文文件中的数据源配置包含与数据库相关的所有详细信息。所以,jdbc / fyproj不一定是数据库名。您使用的真实数据库将在数据源定义中。