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