Servlet action is not available异常解决方案,根据个人eclipse配置不同,处理方式也不同,仅作参考:
开发环境:MyEclipse4.1 + Eclipse3.1 + tomcat6.0
一、问题描述:
我的整合顺序是:先加载Struts,然后加载Hibernate,最后加载Spring,具体步骤为:
1、检查web.xml文件中ActionServlet配置,具体如下:
<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>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2、struts-config.xml文件配置:
<struts-config>
<data-sources />
<form-beans>
<form-bean name="userForm" type="org.wind.struts.form.UserForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="userForm" input="/index.jsp" name="userForm" path="/user" scope="request" >
<forward name="success" path="/success.jsp" />
<forward name="failure" path="/failure.jsp" />
</action>
</action-mappings>
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
<message-resources parameter="org.wind.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
</struts-config>
3、jsp文件form标记中action属性的路径名是否错误,具体如下:
<html:form action="/user">
username : <html:text property="username"/><html:errors property="username"/><br/>
password : <html:password property="password"/><html:errors property="password"/><br/>
<html:submit/><html:cancel/>
</html:form>
4、接下来查看applicationContext.xml文件,具体如下:
<beans>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>file:src/hibernate.cfg.xml</value>
</property>
</bean>
<bean name="/user" class="org.wind.struts.action.UserAction" abstract="false" singleton="false" lazy-init="default" autowire="default" dependency-check="default">
</bean>
</beans>
5、以上均为MyEclipse自动生成的代码,看起来似乎没什么错误,路径检查也正确,测试applicationContext.xml注入也没有任何问题,Tomcat也没抛任何异常,但是登录提交时总是抛Servlet action is not available异常,后来在网上找了一些解决方案,综合起来才总算解决了
二、解决方案:
1、检查applicationContext.xml文件和struts-config.xml的路径没有问题
2、检查项目下的bin目录发现原来缺少spring.jar这个包,添加进包以后运行,异常依旧
3、启动Tomcat,查看apache-tomcat-6.0.14/logs/localhost.2008-01-12.log日志,出现错误:
严重: action: null
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.hibernate.HibernateException: could not configure from URL: file:src/hibernate.cfg.xml
4、原来是file:src/hibernate.cfg.xml文件找不到,修改为:
<beans>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean name="/user" class="org.wind.struts.action.UserAction" abstract="false" singleton="false" lazy-init="default" autowire="default" dependency-check="default">
</bean>
</beans>
再次启动Tomcat,提交,显示结果OK
三、总结:
出现 Servlet action is not available问题的处理要因开发环境不同而处理方式不同,但个人觉得最重要的是解决方法:
1、首先检查是否缺少jar包
2、然后检查file:src/hibernate.cfg.xml问题
3、最主要的是要多看容器的日志文件
2、struts-config.xml文件要访问的Action,具体如下:
本文介绍了一种常见的Servletactionisnotavailable异常及其解决方案,包括检查配置文件路径、添加缺失的jar包、调整hibernate.cfg.xml路径等步骤。
2272

被折叠的 条评论
为什么被折叠?



