2011-01-10 42 views
0

こんにちは、このエラーで苦労しているのですが、その理由が分かりません。データベースにアクセスするには、単純なJdbctemplateを使用するWebアプリケーションがあります。これは私のリソースJava Spring Web App - データベースアクセス例外

@GET 
    @Produces("text/plain") 
    public String getIt() { 
     return "the number of users are " +db.getUsers(); 
    } 

TestDAO.java

です

Tomcatのログから
10-Jan-2011 21:15:28 com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException 
SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container 
java.lang.NullPointerException 
    at example.jersey.spring.dao.testDAO.getUsers(testDAO.java:20) 
    at example.jersey.spring.MyResource.getIt(MyResource.java:23) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:168) 
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:70) 
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:279) 
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:86) 
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136) 
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1357) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1289) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) 
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:497) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:684) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Unknown Source) 

をテストしたが、私が展開するときにアプリケーションジャージは、サーバー上のクエリを実行しているいくつかの問題があり、これはスタックトレースですされています

SimpleJdbcTemplate simpleJdbcTemplate ; 

     public void setDataSource(final DataSource dataSource) { 
      this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource); 
     } 

db.getusers戻り日食でローカルに実行applicationContext.xmlを

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> 
     <property name="driverClassName" value="${jdbc.driverClassName}"/> 
     <property name="url" value="${jdbc.url}"/> 
     <property name="username" value="${username}"/> 
     <property name="password" value="${password}"/> 
    </bean> 

<bean id="testDAO" class="com.example.testDAOimpl"> 
     <property name="dataSource" ref="dataSource"/> 
    </bean> 

- それは仕事をdoesntのなぜすべてのヘルプは非常に

を高く評価

を展開したとき1の正しい値はので、私は理解して傾けます

(ローカルセットアップと実際の違いはないと思われます)このanyhelpに遭遇した人は大いに感謝します。

ありがとう クリス

+0

これは、データベースの問題ではありませんが、あなた自身のコードから 'NullPointerException'を持っています。行番号 'testDAO.java:20'を見て、それが何であるかを調べてください。 – skaffman

+0

ええ、私は理解していますが、SimpleJDBCTemplateがnullであるためnullポインタの例外があると思いますSimpleJDBCとそのアプリケーションコンテキストの宣言に追加しました – Chris

+1

あなたのJerseyコントローラはDAOをどのように保持していますか? – skaffman

答えて

0

BeanFactoryLocator beanFactoryLocator = SingletonBeanFactoryLocator.getInstance(); 
BeanFactoryReference beanFactoryReference = beanFactoryLocator.useBeanFactory("ctx"); 

testDAOimpl myDao = (testDAOimpl)beanFactoryReference.getFactory().getBean("testDAO"); 
+0

これを実現したので、とにかく答えてくれてありがとう – Chris

1

これが問題なのかどうかわかりません。しかし、同様の問題に直面していました。何が起こったのかは、私のサーバーコードのクラスパスにMimeMultipart.classがないことです。 Jerseyはクラスを見つけることができなかったため、サーバー要求を適切にマップできませんでした。最も奇妙なことは、クラスが見つからないことを示すサーバー側でエラーメッセージが表示されることはありませんでした。春からそれを得るために、このような何かを、あなたはビーンファクトリを使用すると仮定すると、

関連する問題