You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Glen Mazza <gl...@gmail.com> on 2014/10/05 04:22:16 UTC
"The resource path [cxf-ehcache.xml] is not valid" error
Hi, I'm trying to update my username token tutorial
(http://web-gmazza.rhcloud.com/blog/entry/cxf-usernametoken-profile)
from CXF 2.7.6 to CXF 3.0.1. As part of this upgrade, I'm using Java 8
and Tomcat 8 for the web service provider.
I can deploy the service and view its WSDL from a browser, but when I
try to make a client call the server reports this in the catalina logs:
java.lang.IllegalArgumentException: The resource path
[cxf-ehcache.xml] is not valid
at
org.apache.catalina.webresources.StandardRoot.validate(StandardRoot.java:250)
at
org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:212)
at
org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:206)
at
org.apache.catalina.core.ApplicationContext.getResource(ApplicationContext.java:533)
at
org.apache.catalina.core.ApplicationContextFacade.getResource(ApplicationContextFacade.java:199)
at
org.apache.cxf.transport.servlet.ServletContextResourceResolver.resolve(ServletContextResourceResolver.java:82)
at
org.apache.cxf.resource.DefaultResourceManager.findResource(DefaultResourceManager.java:113)
at
org.apache.cxf.resource.DefaultResourceManager.resolveResource(DefaultResourceManager.java:58)
at
org.apache.cxf.ws.security.wss4j.WSS4JUtils.getConfigFileURL(WSS4JUtils.java:129)
at
org.apache.cxf.ws.security.wss4j.WSS4JUtils.getReplayCache(WSS4JUtils.java:102)
at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getReplayCache(WSS4JInInterceptor.java:781)
at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.configureReplayCaches(WSS4JInInterceptor.java:405)
at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:233)
at
org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JInInterceptor.handleMessage(PolicyBasedWSS4JInInterceptor.java:133)
at
org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JInInterceptor.handleMessage(PolicyBasedWSS4JInInterceptor.java:116)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
...
I haven't configured the location of cxf-ehcache.xml and shouldn't need
to, according to the documentation
(http://cxf.apache.org/docs/ws-securitypolicy.html#WS-SecurityPolicy-Non-booleanWS-SecurityConfigurationparameters)
for the "ws-security.cache.config.file" property: "The default
configuration file that is used is cxf-ehcache.xml
<http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/resources/cxf-ehcache.xml?view=markup>
in the cxf-rt-ws-security module." I've already brought that dependency
into the WSP via the Maven POM:
https://github.com/gmazza/blog-samples/blob/master/cxf_usernametoken_profile/pom.xml,
so the web service provider should be detecting that file but for some
reason isn't. Here is my web service provider configuration:
https://github.com/gmazza/blog-samples/blob/master/cxf_usernametoken_profile/war/src/main/webapp/WEB-INF/cxf-servlet.xml.
Can anyone see why the default cxf-ehcache.xml file isn't getting picked
up by the web service provider?
Thanks,
Glen
Re: "The resource path [cxf-ehcache.xml] is not valid" error
Posted by Colm O hEigeartaigh <co...@apache.org>.
Hi Glen,
The problem is that Tomcat 8 insists that a resource starts with a "/".
Your demo works fine with Tomcat 7. I've merged a fix to CXF + verified it
works ok with your demo in Tomcat 8.
Colm.
On Sun, Oct 5, 2014 at 3:22 AM, Glen Mazza <gl...@gmail.com> wrote:
> Hi, I'm trying to update my username token tutorial (
> http://web-gmazza.rhcloud.com/blog/entry/cxf-usernametoken-profile) from
> CXF 2.7.6 to CXF 3.0.1. As part of this upgrade, I'm using Java 8 and
> Tomcat 8 for the web service provider.
>
> I can deploy the service and view its WSDL from a browser, but when I try
> to make a client call the server reports this in the catalina logs:
>
> java.lang.IllegalArgumentException: The resource path [cxf-ehcache.xml]
> is not valid
> at org.apache.catalina.webresources.StandardRoot.
> validate(StandardRoot.java:250)
> at org.apache.catalina.webresources.StandardRoot.
> getResource(StandardRoot.java:212)
> at org.apache.catalina.webresources.StandardRoot.
> getResource(StandardRoot.java:206)
> at org.apache.catalina.core.ApplicationContext.getResource(
> ApplicationContext.java:533)
> at org.apache.catalina.core.ApplicationContextFacade.getResource(
> ApplicationContextFacade.java:199)
> at org.apache.cxf.transport.servlet.ServletContextResourceResolver
> .resolve(ServletContextResourceResolver.java:82)
> at org.apache.cxf.resource.DefaultResourceManager.findResource(
> DefaultResourceManager.java:113)
> at org.apache.cxf.resource.DefaultResourceManager.resolveResource(
> DefaultResourceManager.java:58)
> at org.apache.cxf.ws.security.wss4j.WSS4JUtils.
> getConfigFileURL(WSS4JUtils.java:129)
> at org.apache.cxf.ws.security.wss4j.WSS4JUtils.
> getReplayCache(WSS4JUtils.java:102)
> at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getReplayCache(
> WSS4JInInterceptor.java:781)
> at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.
> configureReplayCaches(WSS4JInInterceptor.java:405)
> at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(
> WSS4JInInterceptor.java:233)
> at org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JInInterceptor.
> handleMessage(PolicyBasedWSS4JInInterceptor.java:133)
> at org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JInInterceptor.
> handleMessage(PolicyBasedWSS4JInInterceptor.java:116)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
> PhaseInterceptorChain.java:307)
> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(
> ChainInitiationObserver.java:121)
> at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(
> AbstractHTTPDestination.java:243)
> at org.apache.cxf.transport.servlet.ServletController.
> invokeDestination(ServletController.java:223)
> ...
>
> I haven't configured the location of cxf-ehcache.xml and shouldn't need
> to, according to the documentation (http://cxf.apache.org/docs/
> ws-securitypolicy.html#WS-SecurityPolicy-Non-booleanWS-
> SecurityConfigurationparameters) for the "ws-security.cache.config.file"
> property: "The default configuration file that is used is cxf-ehcache.xml <
> http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/
> main/resources/cxf-ehcache.xml?view=markup> in the cxf-rt-ws-security
> module." I've already brought that dependency into the WSP via the Maven
> POM: https://github.com/gmazza/blog-samples/blob/master/cxf_
> usernametoken_profile/pom.xml, so the web service provider should be
> detecting that file but for some reason isn't. Here is my web service
> provider configuration: https://github.com/gmazza/
> blog-samples/blob/master/cxf_usernametoken_profile/war/src/
> main/webapp/WEB-INF/cxf-servlet.xml. Can anyone see why the default
> cxf-ehcache.xml file isn't getting picked up by the web service provider?
>
> Thanks,
> Glen
>
--
Colm O hEigeartaigh
Talend Community Coder
http://coders.talend.com