javax.servlet.UnavailableException

来源:互联网 发布:卖家怎么申请淘宝直播 编辑:程序博客网 时间:2024/05/16 08:51

 用Spring+Struts+Myeclipse来开发时也许会出现以下异常表述:

2006-08-21 04:54:26 StandardContext[/alogin]Marking servlet action as unavailable
2006-08-21 04:54:26 StandardContext[/alogin]Servlet /alogin threw load() exception
javax.servlet.UnavailableException
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:880)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1029)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:480)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
针对以上异常,主要是在struts-config.xml或web.xml文件中配置有问题,正确的写法:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
      <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
    </plug-in>
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
      <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
    </plug-in>

如果文件中的property属性不是以上的名字将会出现上述异常.下面来分析具体原因:

如果大家认真读过struts和spring API文档将会发现为什么这么配置.

org.apache.struts.validator.ValidatorPlugIn类中,有个具体的方法:

public void setPathnames(java.lang.String pathnames)

同样,在spring API文档中,org.springframework.web.struts.ContextLoaderPlugIn类也有相应的方法

public void setContextConfigLocation(String contextConfigLocation)

     如果把他们的property改变,相应的类就在自己的API中找不到自己的相应的方法,导致初始化异常!或许javax.servlet.UnavailableException还有相应的datasource异常,那就认真检查下自己的jdbc或jndi!此文章不做过多解释!

在web.xml中有可能所mapping的对象无法实例就有可能造成这样的原因,比如说hibernateFilter等类似的过滤器实例不出来,你自己可以那个测试类试试到底能用不!

原创粉丝点击