osh
osh

Reputation: 1261

Issue with spring and web.xml and servlet dispatching

I am encountering this error :

 [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)

line 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 .

I have a feeling that what i declare in applicationContext2.xml is not detected because if i do not put context:component-scan base-package="ne.projl.*" /> in the applicationContext.xml ( without the 2) it does not detect my annotated 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;
    }


}

Upvotes: 0

Views: 400

Answers (1)

James
James

Reputation: 18379

The error indicates your EntityManager is null. How are you setting it?

If you are injecting it, include the config file that does the injection, and how you access the injected class.

Upvotes: 0

Related Questions