web.xml<?xml version="1.0" encoding="GB2312"?>
<!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>
  <context-param>
<param-name>webAppRootKey</param-name>
<param-value>smts.root</param-value>
</context-param> <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<!-- 
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
  -->   
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<display-name>CharacterEncodingFilter</display-name>
<filter-class>com.njkys.smts.common.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
  
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
 
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
  
    <servlet>
<servlet-name>ApplicationStartConfigServlet</servlet-name>
<servlet-class>com.njkys.common.web.servlet.ApplicationStartConfigServlet</servlet-class>
<init-param>
<param-name>pageSize</param-name>
<param-value>20</param-value>
</init-param>

<init-param>
<!--?????????????????????-->
<param-name>uploadContextPath</param-name>
<param-value></param-value>
</init-param>

     <load-on-startup>3</load-on-startup>
    </servlet> <servlet>
<servlet-name>BeanContextLoaderServlet</servlet-name>
<servlet-class>com.njkys.common.web.servlet.BeanContextLoaderServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
    </servlet> <servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml
</param-value>
</init-param>

<load-on-startup>2</load-on-startup>
</servlet>

<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
     <load-on-startup>3</load-on-startup>
    </servlet>
    
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> <session-config>
<session-timeout>0</session-timeout>
</session-config> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
    
</web-app>index.jsp<jsp:forward page="/login.do?method=loginPage"/>LoginActionpackage com.njkys.smts.orm.login.action;
public class LoginAction extends BaseDispatchAction
{
private UserInfoService userInfoService = (UserInfoService)BeanContext.getBean("userInfoService");
public ActionForward loginPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
    throws Exception
  {
    request.setAttribute("verifyDegree", request.getAttribute("verifyDegree"));
    return mapping.findForward("loginPage");
  }
}用到的package com.njkys.smts.common.bean;import org.springframework.context.ApplicationContext;public class BeanContext
{
  private static ApplicationContext applicationContext;  public static Object getBean(String name)
  {
    return applicationContext.getBean(name);//就是这个地方报空指针错误
  }  public static Object getBean(String name, Class requiredType) {
    return applicationContext.getBean(name, requiredType);
  }  public static ApplicationContext getApplicationContext() {
    return applicationContext;
  }  public static void setApplicationContext(ApplicationContext applicationContext) {
    applicationContext = applicationContext;
  }
}所报异常
2009-08-27 12:17:03 ERROR RequestProcessor:330 - No action instance for path /login could be created
java.lang.NullPointerException
at com.njkys.smts.common.bean.BeanContext.getBean(BeanContext.java:12)
at com.njkys.smts.orm.login.action.LoginAction.<init>(LoginAction.java:36)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:231)
at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:326)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:268)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:686)
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:656)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:43)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.njkys.smts.common.web.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)请各位帮帮忙,搞了一天多了,找了N多资料,试了N种办法,都没有解决

解决方案 »

  1.   

    applicationContext.xml<?xml version="1.0" encoding="GBK"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
    <!-- database config oracle -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property>
    <property name="url"><value>jdbc:oracle:thin:@localhost:1521:njkys</value></property>
    <!--<property name="url"><value>jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.5.10)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.5.11)(PORT=1521))(LOAD_BALANCE=yes)(FAILOVER=on))(CONNECT_DATA=(SERVICE_NAME=ipms)))</value></property>-->
    <property name="username"><value>njjt</value></property>
    <property name="password"><value>njjt</value></property>
    </bean>
    <!-- end database config -->

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource"><ref local="dataSource"/></property>
    </bean> <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
    <property name="proxyTargetClass"><value>true</value></property>
    <property name="transactionManager"><ref local="transactionManager"/></property>
    <property name="transactionAttributes">
    <props>
    <prop key="*">PROPAGATION_REQUIRED,-com.njkys.smts.common.exception.DomainException</prop>
    </props>
    </property>
    </bean>

    <!-- BaseDAO config -->
    <bean id="baseDAO" class="com.njkys.smts.common.dao.BaseDAO" abstract="true">
    <property name="dataSource"><ref bean="dataSource"/></property>
    </bean>
    <!-- end BaseDAO config -->

    <!-- uploadpath config -->
    <bean id="uploadPathService" class="com.njkys.smts.common.upload.service.UploadPathService">
    <property name="useDiskPath"><value>false</value></property>
    <property name="diskPath"><value>D:</value></property>
    <property name="uploadContext"><value>upload</value></property>
    </bean>
    <!-- end uploadpath config -->

    <!-- upload file size config -->
    <bean id="uploadService" class="com.njkys.smts.common.upload.service.UploadService">
    <property name="maxUploadSize"><value>31457280<!-- 30M --></value></property>
    <property name="uploadPathService"><ref local="uploadPathService"/></property>
    </bean>
    <!-- end upload file size config -->
    <!-- userinfo bean -->
    <bean id="userInfoService" parent="baseTransactionProxy">
    <property name="target">
    <bean class="com.njkys.smts.orm.user.service.UserInfoService">
    <property name="userInfoDAO"><ref local="userInfoDAO"/></property>
    </bean>
    </property>
    </bean>
    <!-- 用户信息 DAO 定义 -->
    <bean id="userInfoDAO" class="com.njkys.smts.orm.user.dao.UserInfoDAO" parent="baseDAO"/>
    <!-- end userinfo bean --></beans>struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
      <data-sources />
      <form-beans />
      <global-exceptions />
      <global-forwards />
      <action-mappings>
        <!-- userinfo start -->
       <action path="/login" type="com.njkys.smts.orm.login.action.LoginAction" parameter="method" validate="false">
    <forward name="loginPage" path="/smts/orm/login/precatoryLogin.jsp" />
    <forward name="reLoginPage" path="login.reLoginPage" />
    <forward name="erroLogin" path="login.erroLogin" />
    <forward name="resetPasswordPage" path="login.resetPassword"/>
    <forward name="goToMainPage" path="login.goToMainPage"/>
        </action>
        <!-- userinfo end -->
      </action-mappings>
      <message-resources parameter="com.njkys.smts.struts.ApplicationResources" />
      <!-- 
      <controller processorClass="org.springframework.web.struts.AutowiringRequestProcessor" />
       -->
      <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> 
        <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> 
      </plug-in>
    </struts-config>
      

  2.   

    spring配置的有问题,好像是有个对象没有被注入!
      

  3.   

     com.njkys.smts.orm.login.action.LoginAction. <init>(LoginAction.java:36) LoginAction.java:36 这行对应的代码发过来!
      

  4.   

    我写的applicationContext.getBean(name); 括号中的东西都是在spring配置中有的
      

  5.   

    LoginAction36行代码private UserInfoService userInfoService = (UserInfoService)BeanContext.getBean("userInfoService");
      

  6.   

    问题就出在applicationContext.getBean("beanname")这个地方,beanname这个参数是传递到了,但是return applicationContext.getBean("beanname");返回nullpointerexception,真不知道怎么办好了,几个配置文件仔细检查了也没发现错误
      

  7.   


    package com.njkys.smts.common.bean;import org.springframework.context.ApplicationContext;public class BeanContext
    {
      private static ApplicationContext applicationContext;  public static Object getBean(String name)
      {
        return applicationContext.getBean(name);//就是这个地方报空指针错误
      }  public static Object getBean(String name, Class requiredType) {
        return applicationContext.getBean(name, requiredType);
      }  public static ApplicationContext getApplicationContext() {
        return applicationContext;
      }  public static void setApplicationContext(ApplicationContext applicationContext) {
        applicationContext = applicationContext;
      }
    }applicationContext 这是你自己定义的,不是从上下文中取的,没有经过实例化,
    是空的。
      

  8.   


    应该是applicationContext引用的值是null,没有创建或没有注入对象!
      

  9.   

    to gukuitian:
    我定义了一个BeanContextLoaderServlet这样的servlet,就是说applicationConext已经装载了,并且在配置文件中注册了package com.njkys.smts.common.web.servlet;import com.njkys.smts.common.bean.BeanContext;
    import javax.servlet.ServletException;
    import org.springframework.web.context.ContextLoaderServlet;
    import org.springframework.web.context.support.WebApplicationContextUtils;public class BeanContextLoaderServlet extends ContextLoaderServlet
    {
      public void init()
        throws ServletException
      {
        super.init();
        BeanContext.setApplicationContext(WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()));
      }
    }[code=XML]
    <servlet>
    <servlet-name>BeanContextLoaderServlet</servlet-name>
    <servlet-class>com.njkys.common.web.servlet.BeanContextLoaderServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
        </servlet>[/code]
      

  10.   

    问题解决了applicationContext = applicationContext;改成BeanContext.applicationContext = applicationContext;都是粗心惹得祸,谢谢大家