2013-07-10 16 views
0

我遇到這個錯誤:問題帶彈簧和web.xml和servlet調度

[WARN] Exception while dispatching incoming RPC call 
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract void ne.projl.client.service.ProjService.testdao(java.lang.Integer) throws java.lang.IllegalArgumentException' threw an unexpected exception: java.lang.NullPointerException 
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:389) 

..... .....

Caused by: java.lang.NullPointerException 
    at ne.projl.server.AbstractDAO.findById(AbstractDAO.java:37) 

線37:return getEntityManager().find(entityClass, id);

web.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation=" 
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

    <context:annotation-config /> 

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 
<web-app> 
    <display-name>Geomajas GWT face example application</display-name> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      classpath:org/geomajas/spring/geomajasContext.xml 
      classpath:org/geomajas/plugin/rasterizing/DefaultRasterizedPipelines.xml 
      WEB-INF/applicationContext.xml 
<!--   WEB-INF/applicationContext2.xml --> 
<!--   WEB-INF/layer*.xml --> 
<!--   WEB-INF/map*.xml --> 
      WEB-INF/layerOsm.xml 
      WEB-INF/mapOsm.xml 
<!--   WEB-INF/applicationContext2.xml --> 

     </param-value> 
    </context-param> 


    <filter> 
     <filter-name>CacheFilter</filter-name> 
     <filter-class>org.geomajas.servlet.CacheFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>CacheFilter</filter-name> 
     <url-pattern>*</url-pattern> 
    </filter-mapping> 

    <listener> 
     <listener-class>org.geomajas.servlet.PrepareScanningContextListener</listener-class> 
    </listener> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <listener> 
     <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>GeomajasServiceServlet</servlet-name> 
     <servlet-class>org.geomajas.gwt.server.GeomajasServiceImpl</servlet-class> 
    </servlet> 

    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath*:META-INF/geomajasWebContext.xml</param-value> 
      <description>Spring Web-MVC specific (additional) context files.</description> 
     </init-param> 
     <load-on-startup>3</load-on-startup> 
    </servlet> 

<!-- SpringGwt remote service servlet --> 
    <servlet> 
     <servlet-name>springGwtRemoteServiceServlet</servlet-name> 
     <servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServlet</servlet-class> 
     <init-param> 
     <param-name>contexConfigLocation</param-name> 
     <param-value>WEB-INF/applicationContext2.xml</param-value> 
     <description>j</description> 
     </init-param> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>GeomajasServiceServlet</servlet-name> 
     <url-pattern>/showcase/geomajasService</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/d/*</url-pattern> 
    </servlet-mapping> 



    <servlet-mapping> 
     <servlet-name>springGwtRemoteServiceServlet</servlet-name> 
     <url-pattern>/showcase/springGwtServices/test</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

</web-app> 

The file applicationContext2.xml below . 

我有一種感覺,我在applicationContext2.xml中聲明的內容未被檢測到,因爲如果我沒有在applicationContext.xml中放置上下文:component-scan base-package =「ne.projl。*」/>(不包含2 )它不檢測我註釋的serviceimpl。

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation=" 
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

    <context:annotation-config /> 

<tx:annotation-driven transaction-manager="transactionManager" /> 
<context:component-scan base-package="ne.projl.*" /> 
<!-- <context:component-scan base-package="FULLY QUALIFIED" /> --> 

<bean class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" id="entityManagerFactory"> 
     <property name="persistenceUnitName" value="MyPUnit" /> 
    </bean> 

    <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> 
     <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    </bean> 


</beans> 

EDIT1:

@Repository("poiCategDAO") 
public class PoiCategDAO extends AbstractDAO<Integer,PoiCateg> { 
    @PersistenceContext(unitName = "ProjPUnit") 
    EntityManager entityManager; 

    //@Override 
    protected EntityManager getEntityManager() { 
     return entityManager; 
    } 


} 
+0

Aaaaaa來找人,線索......或者我應該發佈一些額外的數據? – osh

+0

什麼'ProjPUnit'是?我認爲應該用'MyPUnit'代替: '@PersistenceContext(unitName =「MyPUnit」)'。 – mabbas

回答

0

的錯誤表示您的EntityManager爲空。你如何設置它?

如果您正在注入它,請包含進行注入的配置文件以及如何訪問注入的類。

+0

注射的文件是否已經發布?即applicationContext2.xml。 – osh