You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wss4j-dev@ws.apache.org by "Cheng Lee (JIRA)" <ji...@apache.org> on 2010/05/06 18:09:47 UTC

[jira] Created: (WSS-230) WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"

WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"
----------------------------------------------------------------------------------------------------------------

                 Key: WSS-230
                 URL: https://issues.apache.org/jira/browse/WSS-230
             Project: WSS4J
          Issue Type: Bug
    Affects Versions: 1.5.8
         Environment: spring 2.5.6, wss4j 1.5.8
            Reporter: Cheng Lee
            Assignee: Ruchith Udayanga Fernando


I'm getting "No security action was defined!":

May 6, 2010 12:11:18 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor getAction
WARNING: No security action was defined!
May 6, 2010 12:11:18 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLoggingWARNING: Interceptor for {http://service.auth.company.com/}corporateAuthService has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: No security action was defined!
	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getAction(WSS4JInInterceptor.java:421)
	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:189)
	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)

When using Spring autowire by type, WSS4jInInterceptor.setProperties() is called twice, thus overwriting my configuration below:

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans.xsd
          http://cxf.apache.org/jaxws
          http://cxf.apache.org/schemas/jaxws.xsd"
default-autowire="byType">

  <import resource="classpath:META-INF/cxf/cxf.xml" />
  <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
  <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

  <jaxws:endpoint id="auth" implementor="#authServiceImpl"
    address="/swAuth">
    <jaxws:inInterceptors>
      <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
      <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
        <constructor-arg>
          <map>
            <entry key="action" value="UsernameToken" />
            <entry key="passwordType" value="PasswordText" />
            <entry key="passwordCallbackRef">
              <ref bean="serverPasswordCallback" />
            </entry>
          </map>
        </constructor-arg>
      </bean>
    </jaxws:inInterceptors>
  </jaxws:endpoint>

  <bean id="serverPasswordCallback" class="com.company.auth.service.ServerPasswordCallback">
    <property name="username">
      <value>ws-client</value>
    </property>
    <property name="password">
      <value>123</value>
    </property>
  </bean>

  <bean id="authServiceImpl" class="com.company.auth.service.AuthServiceImpl">
    <property name="employeeDao" ref="employeeDao" />
  </bean>
</beans>

----------
This is evidenced while debugging:

First time at WSS4JInInterceptor instantiation it calls setProperties() with my values:

Thread [main] (Suspended (breakpoint at line 112 in WSS4JInInterceptor))	
	WSS4JInInterceptor.<init>(Map<String,Object>) line: 112	
	NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]	
	NativeConstructorAccessorImpl.newInstance(Object[]) line: 39	
	DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27	
	Constructor<T>.newInstance(Object...) line: 513	
	BeanUtils.instantiateClass(Constructor, Object[]) line: 100	
	CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Constructor, Object[]) line: 87	
	ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 248	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 925	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 835	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 440	
	AbstractAutowireCapableBeanFactory$1.run() line: 409	
	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
	AbstractAutowireCapableBeanFactory$1.run() line: 409	
	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
	AbstractBeanFactory$1.getObject() line: 264	
	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
	StandardContext.listenerStart() line: 3972	
	StandardContext.start() line: 4467	
	StandardHost(ContainerBase).start() line: 1045	
	StandardHost.start() line: 722	
	StandardEngine(ContainerBase).start() line: 1045	
	StandardEngine.start() line: 443	
	StandardService.start() line: 516	
	StandardServer.start() line: 710	
	Catalina.start() line: 593	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	Bootstrap.start() line: 289	
	Bootstrap.main(String[]) line: 414	

And then another invokation to setProperties(Map):

Thread [main] (Suspended (breakpoint at line 130 in AbstractWSS4JInterceptor))	
	WSS4JInInterceptor(AbstractWSS4JInterceptor).setProperties(Map<String,Object>) line: 130	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	BeanWrapperImpl.setPropertyValue(BeanWrapperImpl$PropertyTokenHolder, PropertyValue) line: 840	
	BeanWrapperImpl.setPropertyValue(PropertyValue) line: 651	
	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues, boolean, boolean) line: 78	
	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues) line: 59	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1276	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
	AbstractAutowireCapableBeanFactory$1.run() line: 409	
	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
	AbstractAutowireCapableBeanFactory$1.run() line: 409	
	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
	AbstractBeanFactory$1.getObject() line: 264	
	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
	StandardContext.listenerStart() line: 3972	
	StandardContext.start() line: 4467	
	StandardHost(ContainerBase).start() line: 1045	
	StandardHost.start() line: 722	
	StandardEngine(ContainerBase).start() line: 1045	
	StandardEngine.start() line: 443	
	StandardService.start() line: 516	
	StandardServer.start() line: 710	
	Catalina.start() line: 593	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	Bootstrap.start() line: 289	
	Bootstrap.main(String[]) line: 414	


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org


[jira] Commented: (WSS-230) WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WSS-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12864825#action_12864825 ] 

Daniel Kulp commented on WSS-230:
---------------------------------



This is really just the way spring works and not much WE can do about it.   However, you can make it work correctly for your case by using the property directly and not use the constrctor arg:

  <jaxws:endpoint id="auth" implementor="#authServiceImpl"
    address="/swAuth">
    <jaxws:inInterceptors>
      <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
      <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
        <property name="properties">
          <map>
            <entry key="action" value="UsernameToken" />
            <entry key="passwordType" value="PasswordText" />
            <entry key="passwordCallbackRef">
              <ref bean="serverPasswordCallback" />
            </entry>
          </map>
        </property>
      </bean>
    </jaxws:inInterceptors>
  </jaxws:endpoint>


Since there will be a definition for the properties property, it will use it.


> WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: WSS-230
>                 URL: https://issues.apache.org/jira/browse/WSS-230
>             Project: WSS4J
>          Issue Type: Bug
>    Affects Versions: 1.5.8
>         Environment: spring 2.5.6, wss4j 1.5.8
>            Reporter: Cheng Lee
>            Assignee: Ruchith Udayanga Fernando
>         Attachments: webservice_sample_apache_cxf.tar.gz
>
>
> I'm getting "No security action was defined!":
> May 6, 2010 12:11:18 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor getAction
> WARNING: No security action was defined!
> May 6, 2010 12:11:18 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLoggingWARNING: Interceptor for {http://service.auth.company.com/}corporateAuthService has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: No security action was defined!
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getAction(WSS4JInInterceptor.java:421)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:189)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
> 	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
> 	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:619)
> When using Spring autowire by type, WSS4jInInterceptor.setProperties() is called twice, thus overwriting my configuration below:
> <beans xmlns="http://www.springframework.org/schema/beans"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
>   xsi:schemaLocation="http://www.springframework.org/schema/beans
>           http://www.springframework.org/schema/beans/spring-beans.xsd
>           http://cxf.apache.org/jaxws
>           http://cxf.apache.org/schemas/jaxws.xsd"
> default-autowire="byType">
>   <import resource="classpath:META-INF/cxf/cxf.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>   <jaxws:endpoint id="auth" implementor="#authServiceImpl"
>     address="/swAuth">
>     <jaxws:inInterceptors>
>       <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
>       <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>         <constructor-arg>
>           <map>
>             <entry key="action" value="UsernameToken" />
>             <entry key="passwordType" value="PasswordText" />
>             <entry key="passwordCallbackRef">
>               <ref bean="serverPasswordCallback" />
>             </entry>
>           </map>
>         </constructor-arg>
>       </bean>
>     </jaxws:inInterceptors>
>   </jaxws:endpoint>
>   <bean id="serverPasswordCallback" class="com.company.auth.service.ServerPasswordCallback">
>     <property name="username">
>       <value>ws-client</value>
>     </property>
>     <property name="password">
>       <value>123</value>
>     </property>
>   </bean>
>   <bean id="authServiceImpl" class="com.company.auth.service.AuthServiceImpl">
>     <property name="employeeDao" ref="employeeDao" />
>   </bean>
> </beans>
> ----------
> This is evidenced while debugging:
> First time at WSS4JInInterceptor instantiation it calls setProperties() with my values:
> Thread [main] (Suspended (breakpoint at line 112 in WSS4JInInterceptor))	
> 	WSS4JInInterceptor.<init>(Map<String,Object>) line: 112	
> 	NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]	
> 	NativeConstructorAccessorImpl.newInstance(Object[]) line: 39	
> 	DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27	
> 	Constructor<T>.newInstance(Object...) line: 513	
> 	BeanUtils.instantiateClass(Constructor, Object[]) line: 100	
> 	CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Constructor, Object[]) line: 87	
> 	ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 248	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 925	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 835	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 440	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	
> And then another invokation to setProperties(Map):
> Thread [main] (Suspended (breakpoint at line 130 in AbstractWSS4JInterceptor))	
> 	WSS4JInInterceptor(AbstractWSS4JInterceptor).setProperties(Map<String,Object>) line: 130	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	BeanWrapperImpl.setPropertyValue(BeanWrapperImpl$PropertyTokenHolder, PropertyValue) line: 840	
> 	BeanWrapperImpl.setPropertyValue(PropertyValue) line: 651	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues, boolean, boolean) line: 78	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues) line: 59	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1276	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org


[jira] Updated: (WSS-230) WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"

Posted by "Cheng Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WSS-230?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Cheng Lee updated WSS-230:
--------------------------

    Attachment: webservice_sample_apache_cxf.tar.gz

I'm attaching a Maven project to reproduce the test case.

Deploy the webservice to http://localhost:8180/cxf_ws-security_spring/services/swAuth

Then:

Run src/test/java/com/company/auth/service/client/AuthServiceFactoryIntegTest.java

> WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: WSS-230
>                 URL: https://issues.apache.org/jira/browse/WSS-230
>             Project: WSS4J
>          Issue Type: Bug
>    Affects Versions: 1.5.8
>         Environment: spring 2.5.6, wss4j 1.5.8
>            Reporter: Cheng Lee
>            Assignee: Ruchith Udayanga Fernando
>         Attachments: webservice_sample_apache_cxf.tar.gz
>
>
> I'm getting "No security action was defined!":
> May 6, 2010 12:11:18 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor getAction
> WARNING: No security action was defined!
> May 6, 2010 12:11:18 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLoggingWARNING: Interceptor for {http://service.auth.company.com/}corporateAuthService has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: No security action was defined!
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getAction(WSS4JInInterceptor.java:421)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:189)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
> 	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
> 	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:619)
> When using Spring autowire by type, WSS4jInInterceptor.setProperties() is called twice, thus overwriting my configuration below:
> <beans xmlns="http://www.springframework.org/schema/beans"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
>   xsi:schemaLocation="http://www.springframework.org/schema/beans
>           http://www.springframework.org/schema/beans/spring-beans.xsd
>           http://cxf.apache.org/jaxws
>           http://cxf.apache.org/schemas/jaxws.xsd"
> default-autowire="byType">
>   <import resource="classpath:META-INF/cxf/cxf.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>   <jaxws:endpoint id="auth" implementor="#authServiceImpl"
>     address="/swAuth">
>     <jaxws:inInterceptors>
>       <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
>       <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>         <constructor-arg>
>           <map>
>             <entry key="action" value="UsernameToken" />
>             <entry key="passwordType" value="PasswordText" />
>             <entry key="passwordCallbackRef">
>               <ref bean="serverPasswordCallback" />
>             </entry>
>           </map>
>         </constructor-arg>
>       </bean>
>     </jaxws:inInterceptors>
>   </jaxws:endpoint>
>   <bean id="serverPasswordCallback" class="com.company.auth.service.ServerPasswordCallback">
>     <property name="username">
>       <value>ws-client</value>
>     </property>
>     <property name="password">
>       <value>123</value>
>     </property>
>   </bean>
>   <bean id="authServiceImpl" class="com.company.auth.service.AuthServiceImpl">
>     <property name="employeeDao" ref="employeeDao" />
>   </bean>
> </beans>
> ----------
> This is evidenced while debugging:
> First time at WSS4JInInterceptor instantiation it calls setProperties() with my values:
> Thread [main] (Suspended (breakpoint at line 112 in WSS4JInInterceptor))	
> 	WSS4JInInterceptor.<init>(Map<String,Object>) line: 112	
> 	NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]	
> 	NativeConstructorAccessorImpl.newInstance(Object[]) line: 39	
> 	DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27	
> 	Constructor<T>.newInstance(Object...) line: 513	
> 	BeanUtils.instantiateClass(Constructor, Object[]) line: 100	
> 	CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Constructor, Object[]) line: 87	
> 	ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 248	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 925	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 835	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 440	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	
> And then another invokation to setProperties(Map):
> Thread [main] (Suspended (breakpoint at line 130 in AbstractWSS4JInterceptor))	
> 	WSS4JInInterceptor(AbstractWSS4JInterceptor).setProperties(Map<String,Object>) line: 130	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	BeanWrapperImpl.setPropertyValue(BeanWrapperImpl$PropertyTokenHolder, PropertyValue) line: 840	
> 	BeanWrapperImpl.setPropertyValue(PropertyValue) line: 651	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues, boolean, boolean) line: 78	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues) line: 59	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1276	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org


[jira] Commented: (WSS-230) WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"

Posted by "Cheng Lee (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WSS-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12865163#action_12865163 ] 

Cheng Lee commented on WSS-230:
-------------------------------

Thank you Daniel for your quick response :)

Setting the property directly works but I'm worried about some properties not being set. For instance, If constructor arguments is used in combination with default-autowire="byType", then WSS4jInInterceptor.setProperties() is called first with these properties:

{action=UsernameToken, passwordType=PasswordText, passwordCallbackRef=com.company.auth.service.ServerPasswordCallback@1fd6f07}

And then with these in the second WSS4jInInterceptor.setProperties() call:

{cxf=org.apache.cxf.bus.CXFBusImpl@c77c8, org.apache.cxf.bus.spring.BusApplicationListener=org.apache.cxf.bus.spring.BusApplicationListener@442c76, org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor=org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor@8c0d58, org.apache.cxf.bus.spring.Jsr250BeanPostProcessor=org.apache.cxf.bus.spring.Jsr250BeanPostProcessor@c02d83, org.apache.cxf.bus.spring.BusExtensionPostProcessor=org.apache.cxf.bus.spring.BusExtensionPostProcessor@ec0962, org.apache.cxf.resource.ResourceManager=org.apache.cxf.bus.resource.ResourceManagerImpl@5c18ff, org.apache.cxf.configuration.Configurer=org.apache.cxf.configuration.spring.ConfigurerImpl@6d12a9, org.apache.cxf.binding.BindingFactoryManager=org.apache.cxf.binding.BindingFactoryManagerImpl@e427ed, org.apache.cxf.transport.DestinationFactoryManager=org.apache.cxf.transport.DestinationFactoryManagerImpl@f9748f, org.apache.cxf.transport.ConduitInitiatorManager=org.apache.cxf.transport.ConduitInitiatorManagerImpl@1537060, org.apache.cxf.wsdl.WSDLManager=org.apache.cxf.wsdl11.WSDLManagerImpl@f6ede1, org.apache.cxf.phase.PhaseManager=org.apache.cxf.phase.PhaseManagerImpl@17b60b6, org.apache.cxf.workqueue.WorkQueueManager=org.apache.cxf.workqueue.WorkQueueManagerImpl@10a4d7c, org.apache.cxf.buslifecycle.BusLifeCycleManager=org.apache.cxf.buslifecycle.CXFBusLifeCycleManager@1652e61, org.apache.cxf.endpoint.ServerRegistry=org.apache.cxf.endpoint.ServerRegistryImpl@1c7eb33, org.apache.cxf.endpoint.ServerLifeCycleManager=org.apache.cxf.endpoint.ServerLifeCycleManagerImpl@226649, org.apache.cxf.endpoint.ClientLifeCycleManager=org.apache.cxf.endpoint.ClientLifeCycleManagerImpl@695527, org.apache.cxf.transports.http.QueryHandlerRegistry=org.apache.cxf.transport.http.QueryHandlerRegistryImpl@1559ba8, org.apache.cxf.endpoint.EndpointResolverRegistry=org.apache.cxf.endpoint.EndpointResolverRegistryImpl@15e6691, org.apache.cxf.headers.HeaderManager=org.apache.cxf.headers.HeaderManagerImpl@9fe666, org.apache.cxf.catalog.OASISCatalogManager=org.apache.cxf.catalog.OASISCatalogManager@1cf6f61, org.apache.cxf.endpoint.ServiceContractResolverRegistry=org.apache.cxf.endpoint.ServiceContractResolverRegistryImpl@19988c7, org.apache.cxf.binding.soap.SoapBindingFactory=org.apache.cxf.binding.soap.SoapBindingFactory@e2fa0e, org.apache.cxf.binding.soap.SoapTransportFactory=org.apache.cxf.binding.soap.SoapTransportFactory@18ed284, org.apache.cxf.binding.soap.customEditorConfigurer=org.springframework.beans.factory.config.CustomEditorConfigurer@19eef79, org.apache.cxf.transport.servlet.ServletTransportFactory=org.apache.cxf.transport.servlet.ServletTransportFactory@17c3056, auth=org.apache.cxf.jaxws.spring.EndpointDefinitionParser$SpringEndpointImpl@499f7d, serverPasswordCallback=com.company.auth.service.ServerPasswordCallback@1fd6f07, authServiceImpl=com.company.auth.service.AuthServiceImpl@185e155, employeeDao=com.company.auth.dao.EmployeeDaoImpl@8cd4db, messageSource=org.springframework.context.support.DelegatingMessageSource@1ea8dbd, applicationEventMulticaster=org.springframework.context.event.SimpleApplicationEventMulticaster@1ff83a9}

As you can see, a lot of CXF beans are injected as properties and I think they might be needed.

On the other hand, if I inject my properties directly instead of using the constructor approach, then I will only have MY properties and not all CXF properties. I'm afraid missing all these will cause further malfunction.

> WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: WSS-230
>                 URL: https://issues.apache.org/jira/browse/WSS-230
>             Project: WSS4J
>          Issue Type: Bug
>    Affects Versions: 1.5.8
>         Environment: spring 2.5.6, wss4j 1.5.8
>            Reporter: Cheng Lee
>            Assignee: Ruchith Udayanga Fernando
>         Attachments: webservice_sample_apache_cxf.tar.gz
>
>
> I'm getting "No security action was defined!":
> May 6, 2010 12:11:18 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor getAction
> WARNING: No security action was defined!
> May 6, 2010 12:11:18 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLoggingWARNING: Interceptor for {http://service.auth.company.com/}corporateAuthService has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: No security action was defined!
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getAction(WSS4JInInterceptor.java:421)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:189)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
> 	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
> 	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:619)
> When using Spring autowire by type, WSS4jInInterceptor.setProperties() is called twice, thus overwriting my configuration below:
> <beans xmlns="http://www.springframework.org/schema/beans"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
>   xsi:schemaLocation="http://www.springframework.org/schema/beans
>           http://www.springframework.org/schema/beans/spring-beans.xsd
>           http://cxf.apache.org/jaxws
>           http://cxf.apache.org/schemas/jaxws.xsd"
> default-autowire="byType">
>   <import resource="classpath:META-INF/cxf/cxf.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>   <jaxws:endpoint id="auth" implementor="#authServiceImpl"
>     address="/swAuth">
>     <jaxws:inInterceptors>
>       <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
>       <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>         <constructor-arg>
>           <map>
>             <entry key="action" value="UsernameToken" />
>             <entry key="passwordType" value="PasswordText" />
>             <entry key="passwordCallbackRef">
>               <ref bean="serverPasswordCallback" />
>             </entry>
>           </map>
>         </constructor-arg>
>       </bean>
>     </jaxws:inInterceptors>
>   </jaxws:endpoint>
>   <bean id="serverPasswordCallback" class="com.company.auth.service.ServerPasswordCallback">
>     <property name="username">
>       <value>ws-client</value>
>     </property>
>     <property name="password">
>       <value>123</value>
>     </property>
>   </bean>
>   <bean id="authServiceImpl" class="com.company.auth.service.AuthServiceImpl">
>     <property name="employeeDao" ref="employeeDao" />
>   </bean>
> </beans>
> ----------
> This is evidenced while debugging:
> First time at WSS4JInInterceptor instantiation it calls setProperties() with my values:
> Thread [main] (Suspended (breakpoint at line 112 in WSS4JInInterceptor))	
> 	WSS4JInInterceptor.<init>(Map<String,Object>) line: 112	
> 	NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]	
> 	NativeConstructorAccessorImpl.newInstance(Object[]) line: 39	
> 	DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27	
> 	Constructor<T>.newInstance(Object...) line: 513	
> 	BeanUtils.instantiateClass(Constructor, Object[]) line: 100	
> 	CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Constructor, Object[]) line: 87	
> 	ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 248	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 925	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 835	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 440	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	
> And then another invokation to setProperties(Map):
> Thread [main] (Suspended (breakpoint at line 130 in AbstractWSS4JInterceptor))	
> 	WSS4JInInterceptor(AbstractWSS4JInterceptor).setProperties(Map<String,Object>) line: 130	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	BeanWrapperImpl.setPropertyValue(BeanWrapperImpl$PropertyTokenHolder, PropertyValue) line: 840	
> 	BeanWrapperImpl.setPropertyValue(PropertyValue) line: 651	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues, boolean, boolean) line: 78	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues) line: 59	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1276	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org


[jira] Commented: (WSS-230) WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"

Posted by "Cheng Lee (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WSS-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12865174#action_12865174 ] 

Cheng Lee commented on WSS-230:
-------------------------------

Looking it a bit closer, it seems that the properties being set on the second call is the Spring Context Properties since it contains nearly all beans I think my sample application has. As I was using autowire by type, Spring is probably injecting whatever Properties it can find in the context.

I'm wondering if setProperties(Map<String, Object> properties) can be qualified using @Qualifier so that it would only inject a Map with a pre-defined ID but a name clash might occur if it's already in use. So calling setProperties() explicitly really seems to be the only solution. But I do think that the constructor "public WSS4JInInterceptor(Map<String, Object> properties)" is evil since in this use case, it will cause problems.

Could future versions of WSS4J log a warning stating that autowire by type + properties injection by constructor is a deadly combination (or better yet... deprecate it)? This really took me several days to figure out what was going on and I'm afraid many will go thru the same.

> WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: WSS-230
>                 URL: https://issues.apache.org/jira/browse/WSS-230
>             Project: WSS4J
>          Issue Type: Bug
>    Affects Versions: 1.5.8
>         Environment: spring 2.5.6, wss4j 1.5.8
>            Reporter: Cheng Lee
>            Assignee: Ruchith Udayanga Fernando
>         Attachments: webservice_sample_apache_cxf.tar.gz
>
>
> I'm getting "No security action was defined!":
> May 6, 2010 12:11:18 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor getAction
> WARNING: No security action was defined!
> May 6, 2010 12:11:18 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLoggingWARNING: Interceptor for {http://service.auth.company.com/}corporateAuthService has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: No security action was defined!
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getAction(WSS4JInInterceptor.java:421)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:189)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
> 	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
> 	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:619)
> When using Spring autowire by type, WSS4jInInterceptor.setProperties() is called twice, thus overwriting my configuration below:
> <beans xmlns="http://www.springframework.org/schema/beans"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
>   xsi:schemaLocation="http://www.springframework.org/schema/beans
>           http://www.springframework.org/schema/beans/spring-beans.xsd
>           http://cxf.apache.org/jaxws
>           http://cxf.apache.org/schemas/jaxws.xsd"
> default-autowire="byType">
>   <import resource="classpath:META-INF/cxf/cxf.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>   <jaxws:endpoint id="auth" implementor="#authServiceImpl"
>     address="/swAuth">
>     <jaxws:inInterceptors>
>       <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
>       <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>         <constructor-arg>
>           <map>
>             <entry key="action" value="UsernameToken" />
>             <entry key="passwordType" value="PasswordText" />
>             <entry key="passwordCallbackRef">
>               <ref bean="serverPasswordCallback" />
>             </entry>
>           </map>
>         </constructor-arg>
>       </bean>
>     </jaxws:inInterceptors>
>   </jaxws:endpoint>
>   <bean id="serverPasswordCallback" class="com.company.auth.service.ServerPasswordCallback">
>     <property name="username">
>       <value>ws-client</value>
>     </property>
>     <property name="password">
>       <value>123</value>
>     </property>
>   </bean>
>   <bean id="authServiceImpl" class="com.company.auth.service.AuthServiceImpl">
>     <property name="employeeDao" ref="employeeDao" />
>   </bean>
> </beans>
> ----------
> This is evidenced while debugging:
> First time at WSS4JInInterceptor instantiation it calls setProperties() with my values:
> Thread [main] (Suspended (breakpoint at line 112 in WSS4JInInterceptor))	
> 	WSS4JInInterceptor.<init>(Map<String,Object>) line: 112	
> 	NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]	
> 	NativeConstructorAccessorImpl.newInstance(Object[]) line: 39	
> 	DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27	
> 	Constructor<T>.newInstance(Object...) line: 513	
> 	BeanUtils.instantiateClass(Constructor, Object[]) line: 100	
> 	CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Constructor, Object[]) line: 87	
> 	ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 248	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 925	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 835	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 440	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	
> And then another invokation to setProperties(Map):
> Thread [main] (Suspended (breakpoint at line 130 in AbstractWSS4JInterceptor))	
> 	WSS4JInInterceptor(AbstractWSS4JInterceptor).setProperties(Map<String,Object>) line: 130	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	BeanWrapperImpl.setPropertyValue(BeanWrapperImpl$PropertyTokenHolder, PropertyValue) line: 840	
> 	BeanWrapperImpl.setPropertyValue(PropertyValue) line: 651	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues, boolean, boolean) line: 78	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues) line: 59	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1276	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org