2014-10-27 245 views
0

我試圖爲JAX-RS項目實現Spring Security基本認證。 pom.xml文件無法使用Spring的DelegatingFilterProxy過濾器部署JAX-RS

<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>org.wso2.af</groupId> 
<artifactId>attws</artifactId> 
<version>default-SNAPSHOT</version> 
<packaging>war</packaging> 
<name>attws</name> 
<description>attws</description> 
<properties> 
    <carbon.platform.version>4.2.0</carbon.platform.version> 
    <junit.version>4.8.2</junit.version> 
    <cxf.version>2.6.1</cxf.version> 
    <jersey-version>1.0</jersey-version> 
    <org.springframework.version>3.2.0.RELEASE</org.springframework.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${org.springframework.version}</version> 
     <type>jar</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${org.springframework.version}</version> 
     <type>jar</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>${org.springframework.version}</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${org.springframework.version}</version> 
     <scope>compile</scope> 
    </dependency> 

web.xml文件

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <display-name>JAX-WS/JAX-RS Webapp</display-name> 
    <!----> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class> 
      org.springframework.web.filter.DelegatingFilterProxy 
     </filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 


    <!----> 
    <context-param> 
     <param-name>applicationKey</param-name> 
     <param-value>attws</param-value> 
    </context-param> 
    <servlet> 
     <servlet-name>JAXServlet</servlet-name> 
     <display-name>JAX-WS/JAX-RS Servlet</display-name> 
     <description>JAX-WS/JAX-RS Endpoint</description> 
     <servlet-class> 
      org.apache.cxf.transport.servlet.CXFServlet 
     </servlet-class> 
     <init-param> 
      <param-name>service-list-stylesheet</param-name> 
      <param-value>servicelist.css</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>JAXServlet</servlet-name> 
     <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>60</session-timeout> 
    </session-config> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:security-context.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
</web-app> 

安全的context.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:security="http://www.springframework.org/schema/security" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-3.2.xsd"> 

<security:http auto-config="true"> 
    <security:intercept-url pattern="/logs/**" access="ROLE_USER, ROLE_ADMIN"/> 
    <security:intercept-url pattern="/logviewer.html" access="ROLE_USER, ROLE_ADMIN"/> 
    <security:intercept-url pattern="/qr/**" access="ROLE_USER, ROLE_ADMIN"/> 
    <!-- security:intercept-url pattern="/sms/**" access="ROLE_USER, ROLE_ADMIN"/--> 
    <security:intercept-url pattern="/services/**" access="ROLE_USER"/> 
    <security:http-basic /> 
</security:http> 

<security:authentication-manager alias="authenticationManager"> 
    <security:authentication-provider> 
     <security:user-service> 
      <security:user name="username1" password="password1" authorities="ROLE_USER" /> 
      <security:user name="username2" password="password2" authorities="ROLE_USER, ROLE_ADMIN" /> 
     </security:user-service> 
    </security:authentication-provider> 
</security:authentication-manager> 

CXF-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
    http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> 


<jaxrs:server id="libraryService" address="/library"> 
    <jaxrs:serviceBeans> 
     <ref bean="libraryServiceBean"/> 
    </jaxrs:serviceBeans> 

</jaxrs:server> 

<!--bean id="serviceBean" class="demo.jaxrs.server.CustomerService"/--> 
<bean id="tagServiceBean" class="att.jaxrs.server.TagService"/> 
<bean id="libraryServiceBean" class="att.jaxrs.server.LibraryService"/> 

雖然部署我得到的錯誤:

[2014-10-27 13:50:36,194] ERROR {org.apache.tomcat.util.digester.Digester} - End event threw exception 
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter 
     at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:855) 
     at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201) 
     at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1051) 
     at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) 
     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) 
     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) 
     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
     at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
     at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 
     at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
     at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) 
     at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1878) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1259) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:280) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:177) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:222) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:174) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:141) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:116) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deployThisWebApp(AbstractWebappDeployer.java:140) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deploy(AbstractWebappDeployer.java:90) 
     at org.wso2.carbon.webapp.deployer.WebappDeployer.deploy(WebappDeployer.java:42) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:810) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:65) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:110) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
     at java.lang.Thread.run(Thread.java:695) 
[2014-10-27 13:50:36,196] ERROR {org.apache.catalina.startup.ContextConfig} - Parse error in application web.xml file at jndi:/localhost/attws/WEB-INF/web.xml 
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter 
     at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2687) 
     at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719) 
     at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1054) 
     at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) 
     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) 
     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) 
     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
     at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
     at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 
     at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
     at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) 
     at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1878) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1259) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:280) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:177) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:222) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:174) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:141) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:116) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deployThisWebApp(AbstractWebappDeployer.java:140) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deploy(AbstractWebappDeployer.java:90) 
     at org.wso2.carbon.webapp.deployer.WebappDeployer.deploy(WebappDeployer.java:42) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:810) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:65) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:110) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
     at java.lang.Thread.run(Thread.java:695) 
Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter 
     at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:855) 
     at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201) 
     at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1051) 
     ... 49 more 
[2014-10-27 13:50:36,197] ERROR {org.apache.catalina.startup.ContextConfig} - Occurred at line 32 column 14 
[2014-10-27 13:50:36,205] ERROR {org.apache.catalina.startup.ContextConfig} - Marking this application unavailable due to previous error(s) 
[2014-10-27 13:50:36,251] ERROR {org.apache.catalina.core.StandardContext} - Error getConfigured 
[2014-10-27 13:50:36,251] ERROR {org.apache.catalina.core.StandardContext} - Context [/attws] startup failed due to previous errors 
[2014-10-27 13:50:36,260] ERROR {org.wso2.carbon.tomcat.internal.CarbonTomcat} - Cannot stop context 
org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_stop]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/attws]] in state [DESTROYED] 
     at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:409) 
     at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:219) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:298) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:177) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:222) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:174) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:141) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:116) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deployThisWebApp(AbstractWebappDeployer.java:140) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deploy(AbstractWebappDeployer.java:90) 
     at org.wso2.carbon.webapp.deployer.WebappDeployer.deploy(WebappDeployer.java:42) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:810) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:65) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:110) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
     at java.lang.Thread.run(Thread.java:695) 
[2014-10-27 13:50:36,261] ERROR {org.wso2.carbon.tomcat.internal.CarbonTomcat} - Webapp StandardEngine[Catalina].StandardHost[localhost].StandardContext[/attws] failed to deploy 
[2014-10-27 13:50:36,261] ERROR {org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer} - Error while deploying webapp: StandardContext[attws.war].File[/Applications/wso2as-5.2.0/repository/deployment/server/webapps/attws.war] 
org.wso2.carbon.tomcat.CarbonTomcatException: Webapp failed to deploy 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:292) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:177) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:222) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:174) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:141) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:116) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deployThisWebApp(AbstractWebappDeployer.java:140) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deploy(AbstractWebappDeployer.java:90) 
     at org.wso2.carbon.webapp.deployer.WebappDeployer.deploy(WebappDeployer.java:42) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:810) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:65) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:110) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
     at java.lang.Thread.run(Thread.java:695) 
Caused by: java.lang.Exception: Webapp failed to deploy, Lifecycle state is STOPPED 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:284) 
     ... 27 more 
[2014-10-27 13:50:36,261] ERROR {org.wso2.carbon.webapp.mgt.AbstractWebappDeployer} - Error occurred while deploying webapp : /Applications/wso2as-5.2.0/repository/deployment/server/webapps/attws.war 
org.wso2.carbon.CarbonException: Error while deploying webapp: StandardContext[attws.war].File[/Applications/wso2as-5.2.0/repository/deployment/server/webapps/attws.war] 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:283) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:174) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:141) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:116) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deployThisWebApp(AbstractWebappDeployer.java:140) 
     at org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deploy(AbstractWebappDeployer.java:90) 
     at org.wso2.carbon.webapp.deployer.WebappDeployer.deploy(WebappDeployer.java:42) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:810) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:65) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:110) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
     at java.lang.Thread.run(Thread.java:695) 
Caused by: org.wso2.carbon.tomcat.CarbonTomcatException: Webapp failed to deploy 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:292) 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:177) 
     at org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:222) 
     ... 25 more 
Caused by: java.lang.Exception: Webapp failed to deploy, Lifecycle state is STOPPED 
     at org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:284) 
     ... 27 more 

其指向過濾和消息是 「java.lang.NoSuchMethodException:org.apache.catalina.deploy.WebXml addFilter」

回答

0

這是因爲版本與我添加的jar和我在spring上下文中使用的xmlns衝突。

這是我的工作代碼。

的web.xml

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <display-name>JAX-WS/JAX-RS Webapp</display-name> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/security-context.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <context-param> 
    <param-name>applicationKey</param-name> 
     <param-value>attws</param-value> 
    </context-param> 
    <servlet> 
     <servlet-name>JAXServlet</servlet-name> 
     <display-name>JAX-WS/JAX-RS Servlet</display-name> 
     <description>JAX-WS/JAX-RS Endpoint</description> 
     <servlet-class> 
      org.apache.cxf.transport.servlet.CXFServlet 
     </servlet-class> 
     <init-param> 
      <param-name>service-list-stylesheet</param-name> 
      <param-value>servicelist.css</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>JAXServlet</servlet-name> 
     <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>60</session-timeout> 
    </session-config> 

</web-app> 

安全的context.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:security="http://www.springframework.org/schema/security" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation=" 
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
      http://www.springframework.org/schema/security 
      http://www.springframework.org/schema/security/spring-security-3.2.xsd"> 

    <security:http auto-config="true"> 
     <!--<security:intercept-url pattern="/logs/**" access="ROLE_USER, ROLE_ADMIN"/> 
     <security:intercept-url pattern="/logviewer.html" access="ROLE_USER, ROLE_ADMIN"/> 
     <security:intercept-url pattern="/qr/**" access="ROLE_USER, ROLE_ADMIN"/> 
     &lt;!&ndash; security:intercept-url pattern="/sms/**" access="ROLE_USER, ROLE_ADMIN"/&ndash;&gt; 
     <security:intercept-url pattern="/services/**" access="ROLE_USER"/>--> 
     <security:http-basic/> 
    </security:http> 

    <security:authentication-manager alias="authenticationManager"> 
     <security:authentication-provider> 
      <security:user-service> 
       <security:user name="username1" password="password1" authorities="ROLE_USER"/> 
       <security:user name="username2" password="password2" 
           authorities="ROLE_USER, ROLE_ADMIN"/> 
      </security:user-service> 
     </security:authentication-provider> 
    </security:authentication-manager> 
</beans> 

CXF-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
     http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> 

    <!-- The SecureAnnotationsInterceptor honors the @RolesAllowed, @PermitAll and @DenyAll annotations --> 
    <bean id="authorizationInterceptor" 
      class="org.apache.cxf.interceptor.security.SecureAnnotationsInterceptor"> 
     <property name="securedObject" ref="libraryServiceBean"/> 
    </bean> 

    <jaxrs:server id="libraryService" address="/library"> 
     <!-- set the interceptor for the jaxrs:server for in-bound messages to authorize the user --> 
     <jaxrs:inInterceptors> 
      <ref bean="authorizationInterceptor"/> 
     </jaxrs:inInterceptors> 
     <jaxrs:serviceBeans> 
      <ref bean="libraryServiceBean"/> 
     </jaxrs:serviceBeans> 
    </jaxrs:server> 

    <bean id="tagServiceBean" class="att.jaxrs.server.TagService"/> 
    <bean id="libraryServiceBean" class="att.jaxrs.server.LibraryService"/> 

</beans> 

和依賴

<dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      <version>${org.springframework.version}</version> 
      <type>jar</type> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>${org.springframework.version}</version> 
      <type>jar</type> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.annotation</groupId> 
      <artifactId>jsr250-api</artifactId> 
      <version>1.0</version> 
     </dependency> 

春季版<org.springframework.version>3.2.0.RELEASE</org.springframework.version>

相關問題