Well, with 2.2.x, the policy engine is turned on by default. Thus, any config related to turning that on should not be needed. I've updated that wiki page.
<p:externalAttachment location="classpath:/policies.xml"/> should work however. Any chance you could package up a small sample that shows the NPE or similar and attach to that JIRA? Thanks! Dan On Mon June 29 2009 11:05:27 am Anthony Davidson wrote: > Hello, > > I am using CXF 2.2.2 and I am trying to implement a policy that requires > transport-level security for securing messages. I followed the intructions > for enabling and configuring the policy engine ( > http://cwiki.apache.org/CXF20DOC/wspconfiguration.html). The contents of my > cxf.xml is included below along with my policy expression, which is > contained in a separate file called policies.xml. When I ran my code I got > an error shown in the stacktrace below. I did some searching online and > found a currently open bug describing the same problem ( > https://issues.apache.org/jira/browse/CXF-1318?page=com.atlassian.jira.plug >in.system.issuetabpanels:all-tabpanel ). > > I tried the workaround given in the bug and it got rid of the > NullPointerException, however, the policy now isn't being enforced. Does > anyone have any ideas on how I can have CXF enforce transport-level > security? > > Thanks. > > > > cxf.xml > ====== > <?xml version="1.0" encoding="UTF-8" ?> > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:p="http://cxf.apache.org/policy" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" > > xmlns:cxf="http://cxf.apache.org/core" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xsi:schemaLocation=" > http://cxf.apache.org/transports/http/configuration > http://cxf.apache.org/schemas/configuration/http-conf.xsd > http://cxf.apache.org/policy > http://cxf.apache.org/schemas/policy.xsd > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> > <!-- This causes NPE in PolicyEngineImpl --> > <!-- > <p:engine enabled="true" ignoreUnknownAssertions="false"/> > <p:externalAttachment location="classpath:/policies.xml"/> > --> > <bean > class="org.apache.cxf.ws.policy.attachment.external.ExternalAttachmentProvi >der"> <constructor-arg ref="cxf"/> > <property name="location" value="classpath:/policies.xml"/> > </bean> > <bean id="org.apache.cxf.ws.policy.PolicyEngine" > class="org.apache.cxf.ws.policy.spring.InitializingPolicyEngine"> > <property name="bus" ref="cxf"/> > <property name="enabled" value="true"/> > </bean> > </beans> > > > > policies.xml > ========= > <?xml version="1.0" encoding="UTF-8" ?> > <attachments xmlns:wsp="http://www.w3.org/ns/ws-policy" > xmlns:wsa="http://www.w3.org/2005/08/addressing" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> > <wsp:PolicyAttachment> > <wsp:AppliesTo> > <wsa:EndpointReference> > <wsa:Address>xs:anyURI</wsa:Address> > </wsa:EndpointReference> > </wsp:AppliesTo> > <wsp:Policy> > <sp:TransportBinding> > <wsp:Policy> > <sp:TransportToken> > <wsp:Policy> > <sp:HttpsToken> > <wsp:Policy/> > </sp:HttpsToken> > </wsp:Policy> > </sp:TransportToken> > </wsp:Policy> > </sp:TransportBinding> > </wsp:Policy> > </wsp:PolicyAttachment> > </attachments> > > Stacktrace > ======== > > java.lang.NullPointerException > org.apache.cxf.ws.policy.PolicyEngineImpl.supportsAlternative(PolicyEngineI >mpl.java:499) > org.apache.cxf.ws.policy.EndpointPolicyImpl.getSupportedAlternatives(Endpoi >ntPolicyImpl.java:166) > org.apache.cxf.ws.policy.EndpointPolicyImpl.chooseAlternative(EndpointPolic >yImpl.java:153) > org.apache.cxf.ws.policy.EndpointPolicyImpl.finalizeConfig(EndpointPolicyIm >pl.java:137) > org.apache.cxf.ws.policy.EndpointPolicyImpl.initialize(EndpointPolicyImpl.j >ava:133) > org.apache.cxf.ws.policy.PolicyEngineImpl.createEndpointPolicyInfo(PolicyEn >gineImpl.java:482) > org.apache.cxf.ws.policy.PolicyEngineImpl.getEndpointPolicy(PolicyEngineImp >l.java:229) > org.apache.cxf.ws.policy.PolicyEngineImpl.getServerEndpointPolicy(PolicyEng >ineImpl.java:217) > org.apache.cxf.transport.http.policy.PolicyUtils.getServer(PolicyUtils.java >:180) > org.apache.cxf.transport.http.AbstractHTTPDestination.initConfig(AbstractHT >TPDestination.java:398) > org.apache.cxf.transport.http.AbstractHTTPDestination.<init>(AbstractHTTPDe >stination.java:119) > org.apache.cxf.transport.servlet.ServletDestination.<init>(ServletDestinati >on.java:66) > org.apache.cxf.transport.servlet.ServletTransportFactory.getDestination(Ser >vletTransportFactory.java:102) > org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:90) > org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:69) > org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:118 >) > org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.j >ava:167) org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:346) > org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:259) > org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:209) > org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:404) > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3 >9) > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp >l.java:25) java.lang.reflect.Method.invoke(Method.java:597) > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor >y.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1413) > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor >y.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1374) > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor >y.initializeBean(AbstractAutowireCapableBeanFactory.java:1334) > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor >y.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor >y$1.run(AbstractAutowireCapableBeanFactory.java:409) > java.security.AccessController.doPrivileged(Native Method) > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor >y.createBean(AbstractAutowireCapableBeanFactory.java:380) > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(A >bstractBeanFactory.java:264) > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getS >ingleton(DefaultSingletonBeanRegistry.java:221) > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abs >tractBeanFactory.java:261) > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstr >actBeanFactory.java:185) > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstr >actBeanFactory.java:164) > org.springframework.beans.factory.support.DefaultListableBeanFactory.preIns >tantiateSingletons(DefaultListableBeanFactory.java:429) > org.springframework.context.support.AbstractApplicationContext.finishBeanFa >ctoryInitialization(AbstractApplicationContext.java:729) > org.springframework.context.support.AbstractApplicationContext.refresh(Abst >ractApplicationContext.java:381) > org.apache.cxf.transport.servlet.CXFServlet.loadAdditionalConfig(CXFServlet >.java:166) > org.apache.cxf.transport.servlet.CXFServlet.updateContext(CXFServlet.java:1 >34) > org.apache.cxf.transport.servlet.CXFServlet.loadSpringBus(CXFServlet.java:1 >01) org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:70) > org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet >.java:79) > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:10 >5) > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.process >Connection(Http11BaseProtocol.java:664) > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.ja >va:527) > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW >orkerThread.java:80) > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja >va:684) java.lang.Thread.run(Thread.java:619) -- Daniel Kulp [email protected] http://www.dankulp.com/blog
