Does your new interceptor have a constructor that takes a Map<String, Object>? I modified a system test to use a subclass of WSS4JOutInterceptor which just had an empty constructor + a constructor with Map<String, Object> which called super in both cases, and it worked ok.
Colm. On Thu, Apr 24, 2014 at 7:35 PM, Giriraj Bhojak <[email protected]> wrote: > Here is the working config: > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws=" > http://cxf.apache.org/jaxws" > xmlns:util="http://www.springframework.org/schema/util" xmlns:cxf=" > http://cxf.apache.org/core" > 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 > http://www.springframework.org/schema/util > http://www.springframework.org/schema/util/spring-util.xsd > http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> > > > <import resource="classpath:META-INF/cxf/cxf.xml" /> > <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> > > <import resource="classpath:META-INF/cxf/cxf.xml" /> > <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> > > <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" > id="outInterceptor" > > <constructor-arg> > <map> > <entry key="action" value="Timestamp Signature Encrypt" /> > <entry key="user" value="client" /> > <entry key="signaturePropFile" value="keystore.properties" > /> > <entry key="encryptionPropFile" value="keystore.properties" > /> > <entry key="encryptionUser" value="user" /> > <entry key="passwordCallbackClass" > value="PasswordCallback" /> > <entry key="signatureParts" > value="{Element}{ > > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body > " > /> > <entry key="encryptionParts" > value="{Element}{ > > http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body > " > /> > <entry key="encryptionSymAlgorithm" value=" > http://www.w3.org/2001/04/xmlenc#aes128-cbc" /> > <entry key="encryptionKeyTransportAlgorithm" value=" > http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" /> > <entry key="signatureAlgorithm" value=" > http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> > <entry key="isBSPCompliant" value="false" /> > </map> > </constructor-arg> > </bean> > > <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" > id="ininterceptor"> > <constructor-arg> > <map> > <entry key="action" value="Timestamp Signature Encrypt" /> > <entry key="signaturePropFile" value="keystore.properties" > /> > <entry key="decryptionPropFile" value="keystore.properties" > /> > <entry key="passwordCallbackClass" > value="PasswordCallback" /> > <entry key="encryptionKeyTransportAlgorithm" value=" > http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" /> > <entry key="signatureAlgorithm" value=" > http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> > </map> > </constructor-arg> > </bean> > <bean id="logInbound" > class="org.apache.cxf.interceptor.LoggingInInterceptor"> > </bean> > <bean id="logOutbound" > class="org.apache.cxf.interceptor.LoggingOutInterceptor"> > </bean> > <cxf:bus> > <cxf:inInterceptors> > <ref bean="logInbound" /> > </cxf:inInterceptors> > <cxf:outInterceptors> > <ref bean="logOutbound" /> > </cxf:outInterceptors> > <cxf:outFaultInterceptors> > <ref bean="logOutbound" /> > </cxf:outFaultInterceptors> > <cxf:inFaultInterceptors> > <ref bean="logInbound" /> > </cxf:inFaultInterceptors> > </cxf:bus> > </beans> > > > The only change I made that led to error is using a different class for the > bean with id 'outInterceptor'. > The new class simply extends > org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor and overrides > loadCrypto(String, String, RequestData) > Basically I am trying to extend Merlin implementation in order to use > encrypted properties for keystore. > When I start the application, I get classcast exceptions due to > classloader(that's what I believe). > So defining a new merlin implementation via keystore.properties does not > help. > Hence I have been trying to inject the new merlin impl by overriding > loadCrypto. > > Could you please help me figure out what's wrong? > > Thanks, > Giriraj. > > > On Thu, Apr 24, 2014 at 2:17 PM, Colm O hEigeartaigh <[email protected] > >wrote: > > > I don't quite follow. Could you paste your entire spring config please? > > > > Colm. > > > > > > On Thu, Apr 24, 2014 at 7:08 PM, Giriraj Bhojak <[email protected]> > > wrote: > > > > > Hello, > > > > > > I am running into a problem if I extend the > > > org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor via spring beans. > > > > > > I have a bean definition defined as(haven't shown complete <bean> > > > definition) : > > > <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" > > > id="interceptor" > > > > <constructor-arg> > > > <map> > > > <entry key="action" value="Encrypt" /> > > > ............................................................. > > > > > > I need to extend WSS4JOutInterceptor to provide some customized > behavior > > > for crypto properties. > > > But when I do that and use the new class in the above bean definition, > I > > > get following: > > > > > > java.lang.IllegalStateException: Cannot convert value of type > > > [NewOutInterceptor] to required type > > > [org.apache.cxf.interceptor.Interceptor] for property > > 'outInterceptors[0]': > > > no matching editors or conversion strategy found. > > > > > > I am on version 2.7.8 of cxf-rt-ws-security-2.7.8. > > > Could anyone please help me with it? > > > > > > Thanks, > > > Giriraj. > > > > > > > > > > > -- > > Colm O hEigeartaigh > > > > Talend Community Coder > > http://coders.talend.com > > > -- Colm O hEigeartaigh Talend Community Coder http://coders.talend.com
