Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Java bean,Spring MVC - вопрос


Автор: medved55 25.4.2009, 20:01
 Привет всем !!! Разбираюсь со Spring и Hibernate, возникла ошибка над которой я парюсь уже 3 дня)))
 Приведу пример : 
есть три бина, прописанные в applicationContext.xml, причем последним представлен котроллер jsp страницы : 
Код

    <bean id="firstBean" class="TestMy.FirstBean" />

    <bean id="secondBean" class="TestMy.SecondBean">
        <property name="firstBean" ref="firstBean" />
    </bean>

    <bean id="helloControll" class="Controll.HelloControll">
        <property name="secondBean" ref="secondBean" />
    </bean>


реализация firstBean:

Код

public class FirstBean {

    public void firstTest(){
        System.out.println("This is FIRST TEST!!! IZYA-IZYA!!!");
    }

}


реализация secondBean:

Код

public class SecondBean {
    private FirstBean firstBean;

    public FirstBean getFirstBean() {
        return firstBean;
    }

    public void setFirstBean(FirstBean firstBean) {
        this.firstBean = firstBean;
    }
    public void showTest(){
        firstBean.firstTest();
    }
}




и, наконец, контроллер

Код

public class HelloControll extends AbstractController {

    private SecondBean secondBean;

    public SecondBean getSecondBean() {
        return secondBean;
    }

    public void setSecondBean(SecondBean secondBean) {
        this.secondBean = secondBean;
    }

    public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {

        secondBean.showTest();

        ModelAndView mav = new ModelAndView("hello");
        return mav;
    }
}




При компиляции вылетает ошибка :

Код

StandardWrapperValve[dispatcher]: PWC1406: Servlet.service() for servlet dispatcher threw exception
java.lang.NullPointerException
        at Controll.HelloControll.handleRequestInternal(HelloControll.java:31)
        at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:718)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)


 Ясно что не работают сеттеры, но почему и что не так, я так и не понял. Буду очень признателен, если кто - нибудь что - нибудь подскажет))) smile 

Автор: Kangaroo 25.4.2009, 21:37
Вроде все правильно. При инициализии Спринг не выдает ошибок? Скинь полный лог.

Автор: medved55 25.4.2009, 21:45
Привожу полный лог :
Код

Starting Sun Java System Application Server 9.1_02 (build b04-fcs) ...
MBeanServer started: com.sun.enterprise.interceptor.DynamicInterceptor
CORE5098: AS Socket Service Initialization has been completed.
CORE5076: Using [Java HotSpot(TM) Client VM, Version 1.6.0_12] from [Sun Microsystems Inc.]
SEC1002: Security Manager is OFF.
C:/Program Files/glassfish-v2ur2/domains/domain1/config/.__com_sun_appserv_pid
ADM0001:SunoneInterceptor is now enabled
SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.
WEB0114: SSO is disabled in virtual server [server]
WEB0114: SSO is disabled in virtual server [__asadmin]
ADM1079: Initialization of AMX MBeans started
ADM1504: Here is the JMXServiceURL for the Standard JMXConnectorServer: [service:jmx:rmi:///jndi/rmi://philka:8686/jmxrmi].  This is where the remote administrative clients should connect using the standard JMX connectors
ADM1506: Status of Standard JMX Connector: Active = [true]
JBIFW0010: JBI framework ready to accept requests.
WEB0302: Starting Sun-Java-System/Application-Server.
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8081
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8181
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 4849
PWC1412: WebModule[/WhiteParrot] ServletContext.log():Initializing Spring root WebApplicationContext
Root WebApplicationContext: initialization started
Refreshing org.springframework.web.context.support.XmlWebApplicationContext@14b43d: display name [Root WebApplicationContext]; startup date [Sat Apr 25 01:33:56 MSD 2009]; root of context hierarchy
Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
Loading XML bean definitions from ServletContext resource [/WEB-INF/context/wd-data.xml]
Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@14b43d]: org.springframework.beans.factory.support.DefaultListableBeanFactory@280bca
Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@280bca: defining beans [dataSource,sessionFactory,myHibernateTemplate,categoriesDAO,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.config.internalTransactionAdvisor,txManager,categoryServace,baseConteroll,firstBean,secondBean,helloControll]; root of factory hierarchy
Loaded JDBC driver: org.firebirdsql.jdbc.FBDriver
Hibernate 3.2.5
hibernate.properties not found
Bytecode provider name : cglib
using JDK 1.4 java.sql.Timestamp handling
Mapping class: BaseWork.logic.Categories -> CATEGORIES
Building new Hibernate SessionFactory
Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
RDBMS: Firebird 2.1-WI-V2.1.1.17910 Firebird 2.1/tcp (philka)/P10, version: WI-V2.1.1.17910 Firebird 2.1-WI-V2.1.1.17910 Firebird 2.1/tcp (philka)/P10
JDBC driver: Jaybird JCA/JDBC driver, version: 2.1
Using dialect: org.hibernate.dialect.FirebirdDialect
Using default transaction strategy (direct JDBC transactions)
No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
Automatic flush during beforeCompletion(): disabled
Automatic session close at end of transaction: disabled
Scrollable result sets: enabled
JDBC3 getGeneratedKeys(): disabled
Connection release mode: on_close
Default batch fetch size: 1
Generate SQL with comments: enabled
Order SQL updates by primary key: disabled
Order SQL inserts for batching: disabled
Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
Using ASTQueryTranslatorFactory
Query language substitutions: {}
JPA-QL strict compliance: disabled
Second-level cache: disabled
Query cache: enabled
Cache provider: org.hibernate.cache.EhCacheProvider
Optimize cache for minimal puts: disabled
Structured second-level cache entries: disabled
Query cache factory: org.hibernate.cache.StandardQueryCacheFactory
Echoing all SQL to stdout
Statistics: disabled
Deleted entity synthetic identifier rollback: disabled
Default entity-mode: pojo
Named query checking : enabled
building session factory
No configuration found. Configuring ehcache from ehcache-failsafe.xml  found in the classpath: file:/C:/Program Files/glassfish-v2ur2/domains/domain1/generated/jsp/j2ee-modules/WhiteParrot/loader/ehcache-failsafe.xml
Not binding factory to JNDI, no JNDI name configured
starting update timestamps cache at region: org.hibernate.cache.UpdateTimestampsCache
Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.
starting query cache at region: org.hibernate.cache.StandardQueryCache
Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.
Root WebApplicationContext: initialization completed in 8547 ms
PWC1412: WebModule[/WhiteParrot] ServletContext.log():Initializing Spring FrameworkServlet 'dispatcher'
FrameworkServlet 'dispatcher': initialization started
Refreshing org.springframework.web.context.support.XmlWebApplicationContext@c4396a: display name [WebApplicationContext for namespace 'dispatcher-servlet']; startup date [Sat Apr 25 01:34:04 MSD 2009]; parent: org.springframework.web.context.support.XmlWebApplicationContext@14b43d
Loading XML bean definitions from ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
Loading XML bean definitions from ServletContext resource [/WEB-INF/context/wp-view.xml]
Loading XML bean definitions from ServletContext resource [/WEB-INF/context/wp-controllers.xml]
Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@c4396a]: org.springframework.beans.factory.support.DefaultListableBeanFactory@14f1c67
Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@14f1c67: defining beans [org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping#0,urlMapping,viewResolver,autorizController,messageSource,whiteParrot,baseShow,helloControll,adminControll]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@280bca
FrameworkServlet 'dispatcher': initialization completed in 656 ms
SMGT0007: Self Management Rules service is enabled
Application server startup complete.
StandardWrapperValve[dispatcher]: PWC1406: Servlet.service() for servlet dispatcher threw exception
java.lang.NullPointerException
        at Controll.HelloControll.handleRequestInternal(HelloControll.java:31)
        at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:718)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)



Автор: garbuz 25.4.2009, 22:01
Сам сейчас потихоньку курю Spring MVC. 
В web.xml все указано? DispatcherServlet, load-on-startup и т.п. Попробуйте использовать handleRequest, вместо handleRequestInternal.

Автор: NeoNYura 25.4.2009, 22:05
Цитата

StandardWrapperValve[dispatcher]: PWC1406: Servlet.service() for servlet dispatcher threw exception
java.lang.NullPointerException
        at Controll.HelloControll.handleRequestInternal(HelloControll.java:31)



смотрим класс HelloControll.java


похоже не может найти hello диспетчер

Автор: medved55 25.4.2009, 22:35
 Спасибо всем за советы)) Задача решилась до безумия простым способом. Не нужно было писать тестовые бины в проекте с кучей xml!)) Просто у меня в проекте уже был объявлен HelloControll, правда в другом "конфигурационнике", произошел конфликт между двумя объявлениями.

А все от привычки  раскладывать по отдельным пакетам, что бы потом не путалось smile  

Автор: Kangaroo 25.4.2009, 22:50
Цитата(medved55 @  25.4.2009,  22:35 Найти цитируемый пост)
Просто у меня в проекте уже был объявлен HelloControll, правда в другом "конфигурационнике", произошел конфликт между двумя объявлениями.

 А я только хотел такой вариант предложить smile

Добавлено через 1 минуту и 13 секунд
Поставь галочку "Вопрос решен", справа вверху.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)