0

我已将本地主机实现移至另一台服务器并尝试使用另一个 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();

非常感谢

4

1 回答 1

0

java:comp/env 是 Java EE 服务器命名空间。jdbc/fyproj 是您在上下文文件中定义的数据源名称。

在应用服务器启动时,它会加载上下文文件并创建使用 jndi 字符串和在上下文文件中指定的数据库详细信息定义的数据源。

当您想使用数据源时,您需要使用 JNDI 字符串(这是您的数据源绑定的服务器 JNDI 空间 (java:comp/env) 和定义的数据源名称 (jdbc/fyproj) 的组合)。

上下文文件中的数据源配置包含与数据库相关的所有详细信息。因此,jdbc/fyproj 不必是数据库名称。您使用的真实数据库将在数据源定义中。

于 2012-04-19T19:00:44.523 回答