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
>

Reply via email to