Daniel, Thanks for responding.
I put together a small application based on one of the sample applications but I was not able to reproduce the NPE. In my main application cxf.xml I removed the line <p:engine enabled="true" ignoreUnknownAssertions="false"/> and now I do not get the NPE. Weird. However, I do not think the policy engine is reading my policy file because the policy still isn't being enforced. Any ideas? Thanks. On Mon, Jun 29, 2009 at 12:12 PM, Daniel Kulp <[email protected]> wrote: > > 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 >
