You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Kit Plummer <ki...@gmail.com> on 2008/05/24 00:25:53 UTC

Data Binding with a ...

Hey,

Beating my head on this...pardon my ignorance - new to CXF.

I've got a simple service that looks like this:

@WebService
public interface SettingsManager {

     Boolean addSetting(@WebParam(name="namespace") String namespace,
                     @WebParam(name="settingName") String settingName,
                     @WebParam(name="settingValue") String  
settingValue);

     String getSetting(@WebParam(name="namespace") String namespace,
                       @WebParam(name="settingName")String param);

     HashMap<String, String>  
getAllSettings(@WebParam(name="namespace")String namespace);

     Boolean deleteSetting(@WebParam(name="namespace") String namespace,
                       @WebParam(name="settingName")String param);

     List<String> list(@WebParam(name="namespace") String namespace);

}

With no special data bindings the HashMap returned by getAllsettings  
is always empty.  So, tried to use the Aegis data binding, but as soon  
as I do anything with my Spring config the service breaks completely.   
Here's the snip from the config:

<jaxws:endpoint id="GlobalSettings"
                      
implementor="com.accenture.manager.settings.GlobalSettingsManager"
                     address="/globalSettings">

         <!-- signed and encrypted -->
         <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="Signature" />
                         <entry key="signaturePropFile" value="server- 
sign.properties" />
                     </map>
                 </constructor-arg>
             </bean>
         </jaxws:inInterceptors>

</jaxws:endpoint>

Any pointers to get me going in the right direction?  Maybe with a  
JAXB configuration?

TIA,
Kit

Re: Data Binding with a ...

Posted by Kit Plummer <ki...@gmail.com>.
The AegisDatabinding is missing in the client...my bad.  Thanks a  
bunch Benson.  I really appreciate the help.

Kit

On May 23, 2008, at 4:46 PM, Benson Margulies wrote:

> Sorry about the -- oops.
>
> You have the logging interceptors in place, so you should be seeing
> logging traffic corresponding to the fault. The server is sending a
> fault back to the client.
>
> I don't see you putting an AegisDatabinding into the client. Am I
> missing it, or is it missing?
>
> --benson
>
>
> On Fri, May 23, 2008 at 7:38 PM, Kit Plummer <ki...@gmail.com>  
> wrote:
>> Benson.
>>
>> Made some progress.  First, found this problem with the JAX-WS config
>> example here: http://cwiki.apache.org/CXF20DOC/aegis-databinding.html
>>
>> In the commented out XFIRE compat stuff there is '--' within the XML
>> comments.  That apparently is a SAX no-no.  This was causing my
>> configuration woes.  I shamefully admit I found this by looking at  
>> my Tomcat
>> logs.
>>
>> Now...my service and client are running.  But, now I'm getting an  
>> error on
>> the HashMap read...and not just an empty HashMap plus my other  
>> interfaces
>> aren't working either.
>>


Re: Data Binding with a ...

Posted by Benson Margulies <bi...@gmail.com>.
Sorry about the -- oops.

You have the logging interceptors in place, so you should be seeing
logging traffic corresponding to the fault. The server is sending a
fault back to the client.

I don't see you putting an AegisDatabinding into the client. Am I
missing it, or is it missing?

--benson


On Fri, May 23, 2008 at 7:38 PM, Kit Plummer <ki...@gmail.com> wrote:
> Benson.
>
> Made some progress.  First, found this problem with the JAX-WS config
> example here: http://cwiki.apache.org/CXF20DOC/aegis-databinding.html
>
> In the commented out XFIRE compat stuff there is '--' within the XML
> comments.  That apparently is a SAX no-no.  This was causing my
> configuration woes.  I shamefully admit I found this by looking at my Tomcat
> logs.
>
> Now...my service and client are running.  But, now I'm getting an error on
> the HashMap read...and not just an empty HashMap plus my other interfaces
> aren't working either.
>

Re: Data Binding with a ...

Posted by Kit Plummer <ki...@gmail.com>.
Benson.

Made some progress.  First, found this problem with the JAX-WS config  
example here: http://cwiki.apache.org/CXF20DOC/aegis-databinding.html

In the commented out XFIRE compat stuff there is '--' within the XML  
comments.  That apparently is a SAX no-no.  This was causing my  
configuration woes.  I shamefully admit I found this by looking at my  
Tomcat logs.

Now...my service and client are running.  But, now I'm getting an  
error on the HashMap read...and not just an empty HashMap plus my  
other interfaces aren't working either.

Here's the error:

Tests run: 2, Failures: 1, Errors: 1, Skipped: 0, Time elapsed: 4.219  
sec <<< FAILURE!
testGetAllSettings 
(com.XXXXXX.nettoolkit.test.NctGlobalSettingsAcceptanceTest)  Time  
elapsed: 3.652 sec  <<< ERROR!
javax.xml.ws.soap.SOAPFaultException: Fault occurred while processing.
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 
218)
	at $Proxy30.getAllSettings(Unknown Source)
	at  
com 
.XXXXXX 
.nettoolkit 
.settings.NctGlobalSettings.getAllSettings(NctGlobalSettings.java:114)
	at com.  
XXXXXX 
.nettoolkit 
.test 
.NctGlobalSettingsAcceptanceTest 
.testGetAllSettings(NctGlobalSettingsAcceptanceTest.java:55)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:228)
	at junit.framework.TestSuite.run(TestSuite.java:223)
	at  
org 
.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java: 
35)
	at  
org 
.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java: 
62)
	at  
org 
.apache 
.maven 
.surefire 
.suite 
.AbstractDirectoryTestSuite 
.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at  
org 
.apache 
.maven 
.surefire 
.suite 
.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at  
org 
.apache 
.maven 
.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java: 
345)
	at  
org 
.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java: 
1009)
Caused by: org.apache.cxf.binding.soap.SoapFault: Fault occurred while  
processing.
	at  
org 
.apache 
.cxf 
.binding 
.soap 
.interceptor 
.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java: 
70)
	at  
org 
.apache 
.cxf 
.binding 
.soap 
.interceptor 
.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java: 
35)
	at  
org 
.apache 
.cxf 
.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
	at  
org 
.apache 
.cxf 
.interceptor 
.AbstractFaultChainInitiatorObserver 
.onMessage(AbstractFaultChainInitiatorObserver.java:96)
	at  
org 
.apache 
.cxf 
.binding 
.soap 
.interceptor 
.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:65)
	at  
org 
.apache 
.cxf 
.binding 
.soap 
.interceptor 
.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
	at  
org 
.apache 
.cxf 
.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:429)
	at org.apache.cxf.transport.http.HTTPConduit 
$WrappedOutputStream.handleResponse(HTTPConduit.java:1988)
	at org.apache.cxf.transport.http.HTTPConduit 
$WrappedOutputStream.close(HTTPConduit.java:1824)
	at  
org 
.apache 
.cxf 
.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java: 
47)
	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java: 
159)
	at  
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java: 
583)
	at org.apache.cxf.interceptor.MessageSenderInterceptor 
$ 
MessageSenderEndingInterceptor 
.handleMessage(MessageSenderInterceptor.java:62)
	at  
org 
.apache 
.cxf 
.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:276)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 
177)
	... 26 more

testGetSetting(com.  
XXXXXX.nettoolkit.test.NctGlobalSettingsAcceptanceTest)  Time elapsed:  
0.136 sec  <<< FAILURE!
junit.framework.ComparisonFailure: Failure retrieving setting  
expected:<test> but was:<null>
	at junit.framework.Assert.assertEquals(Assert.java:81)
	at com.  
XXXXXX 
.nettoolkit 
.test 
.NctGlobalSettingsAcceptanceTest 
.testGetSetting(NctGlobalSettingsAcceptanceTest.java:70)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:228)
	at junit.framework.TestSuite.run(TestSuite.java:223)
	at  
org 
.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java: 
35)
	at  
org 
.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java: 
62)
	at  
org 
.apache 
.maven 
.surefire 
.suite 
.AbstractDirectoryTestSuite 
.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at  
org 
.apache 
.maven 
.surefire 
.suite 
.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at  
org 
.apache 
.maven 
.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java: 
345)
	at  
org 
.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java: 
1009)

My client is set up programmatically...here's a snip:

public class NctGlobalSettings implements NctGlobalSettingsInf {

	private final static Logger LOG =  
Logger.getLogger("NctGlobalSettings");
	private final static String USER_MANAGER_CONTEXT = "/user-manager";
	private final static String SERVICE_NAME = "/globalSettings";
	private final static String SERVICE_URL = "https://" + getTestHost()  
+ ":" + getTestPort() + USER_MANAGER_CONTEXT + "/services" +  
SERVICE_NAME;
	Map<String, Object> wss4jOutProps = new HashMap<String, Object>();
	SettingsManager globalSettingsClient;
	
	public NctGlobalSettings() {
		// setup the properties for WS-Security.  This is basic username/ 
password
		// authentication, with the password cleartext as specified by PW_TEXT
                 wss4jOutProps.put(WSHandlerConstants.ACTION,  
"Signature");
                 wss4jOutProps.put(WSHandlerConstants.USER, "ws- 
client");
                  
wss4jOutProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,  
ClientPasswordCallback.class.getName());
                 wss4jOutProps.put(WSHandlerConstants.SIG_PROP_FILE,  
"client-sign.properties");

		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		// debugging to stndout
		factory.getInInterceptors().add(new LoggingInInterceptor());
		factory.getOutInterceptors().add(new LoggingOutInterceptor());
		// WS-Security uses saaj and wss4j interceptors
		factory.getOutInterceptors().add(new SAAJOutInterceptor());
		factory.getOutInterceptors().add(new  
WSS4JOutInterceptor(wss4jOutProps));

		factory.setAddress(SERVICE_URL);
		factory.setServiceClass(SettingsManager.class);

		globalSettingsClient = (SettingsManager)factory.create();

		// for development, accept all certificates from tomcat
		Client proxy = ClientProxy.getClient(globalSettingsClient);
		HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
		TLSClientParameters tcp = new TLSClientParameters();
		tcp.setTrustManagers(CertificateAcceptorCXF.acceptAllCerts());
		// for ws-security, The https URL hostname does not match the
		// Common Name (CN) on the server certificate.  this is development  
only
		tcp.setDisableCNCheck(true);
		conduit.setTlsClientParameters(tcp);
	}
	
	// Public Accessor Methods
	
	// TODO throw a useful/custom exception
	public List<String> getAllSettingKeys() {
		List<String> settings = null;
		settings = globalSettingsClient.list("global");
		return settings;
	}
	
	/**
	 *@returnHashMapcontainakey-valuesetofallthesettingsforthe
	 *globalnamespace.
	 */
	public HashMap<String, String> getAllSettings() {
		return globalSettingsClient.getAllSettings("global");
	}
	

Kit

On May 23, 2008, at 4:05 PM, Benson Margulies wrote:

> OK, to start with, the unhappy HashMap is not such a surprise without
> Aegis, as you have to use a type adapter with JAXB to deal with a hash
> map.
>
> The IO exception with Aegis -- now -- that's a surprise to me.
>
> You don't want the XFire compatibility service configuration, but  
> it's harmless.
>
> How do you configure your client? Also JAXWS+Aegis, I trust?
>
> I don't suppose you might be willing to try to cook up a test case we
> could run and attach it to a JIRA?
>
> I should also say that this is very faintly ringing a bell, and when
> Dan sees this thread he might know what is going on. So I hate to ask
> you to spend a lot of time on this until he wanders by.
>
> On Fri, May 23, 2008 at 6:58 PM, Kit Plummer <ki...@gmail.com>  
> wrote:
>> Yes, CXF (same version, now 2.1) on both sides.
>>
>> So, with my config looking like this (notice didn't chance the  
>> jaxw:endpoint
>> either):
>>
>> <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:wsa="http://cxf.apache.org/ws/addressing"
>>       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">
>>
>>       <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" />
>>
>>       <bean id="aegisBean"
>>                
>> class="org.apache.cxf.aegis.databinding.AegisDatabinding"
>>               scope="prototype" />
>>       <bean id="jaxws-and-aegis-service-factory"
>>                
>> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
>>               scope="prototype">
>>               <property name="dataBinding" ref="aegisBean" />
>>               <!-- Use this property only for XFire compatibility  
>> -- this
>> version for 2.0.x ...
>>                       <property name="serviceConfigurations">
>>                       <list>
>>                       <bean
>> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
>>                       <bean
>> class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
>>                       <bean
>> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>>                       </list>
>>                       </property>
>>               -->
>>               <!-- Use this property only for XFire compatibility  
>> -- this
>> version for 2.1
>>                       <property name="serviceConfigurations">
>>                       <list>
>>                       <bean
>> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
>>                       <bean
>> class 
>> = 
>> "org 
>> .apache 
>> .cxf.aegis.databinding.XFireCompatibilityServiceConfiguration"/>
>>                       <bean
>> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>>                       </list>
>>                       </property>
>>               -->
>>       </bean>
>>       <jaxws:endpoint id="Controller"
>>               implementor="com.accenture.manager.Controller"
>> address="/controller" />
>>
>>       <jaxws:endpoint id="UserSettings"
>>
>> implementor="com.accenture.manager.settings.UserSettingsManager"
>>               address="/userSettings" />
>>
>>       <jaxws:endpoint id="GlobalSettings"
>>
>> implementor="com.accenture.manager.settings.GlobalSettingsManager"
>>               address="/globalSettings">
>>
>>               <!-- signed and encrypted -->
>>               <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="Signature" />
>>                                               <entry
>> key="signaturePropFile"
>>
>> value="server-sign.properties" />
>>                                       </map>
>>                               </constructor-arg>
>>                       </bean>
>>               </jaxws:inInterceptors>
>>
>>       </jaxws:endpoint>
>> </beans>
>>
>> I get errors on the client side:
>>
>> May 23, 2008 3:55:16 PM org.apache.cxf.phase.PhaseInterceptorChain
>> doIntercept
>> INFO: Interceptor has thrown exception, unwinding now
>> org.apache.cxf.interceptor.Fault: Could not send Message.
>>       at
>> org.apache.cxf.interceptor.MessageSenderInterceptor 
>> $ 
>> MessageSenderEndingInterceptor 
>> .handleMessage(MessageSenderInterceptor.java:64)
>>       at
>> org 
>> .apache 
>> .cxf 
>> .phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java: 
>> 221)
>>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java: 
>> 276)
>>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java: 
>> 222)
>>       at
>> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>>       at
>> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 
>> 177)
>>       at $Proxy31.addSetting(Unknown Source)
>>       at
>> com 
>> .XXXXXXX 
>> .nettoolkit 
>> .settings.NctGlobalSettings.setSetting(NctGlobalSettings.java:119)
>>       at
>> com 
>> .XXXXXXX 
>> .nettoolkit 
>> .test 
>> .NctGlobalSettingsAcceptanceTest 
>> .testGetSetting(NctGlobalSettingsAcceptanceTest.java:68)
>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>       at
>> sun 
>> .reflect 
>> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>       at
>> sun 
>> .reflect 
>> .DelegatingMethodAccessorImpl 
>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>       at java.lang.reflect.Method.invoke(Method.java:585)
>>       at junit.framework.TestCase.runTest(TestCase.java:164)
>>       at junit.framework.TestCase.runBare(TestCase.java:130)
>>       at junit.framework.TestResult$1.protect(TestResult.java:110)
>>       at junit.framework.TestResult.runProtected(TestResult.java:128)
>>       at junit.framework.TestResult.run(TestResult.java:113)
>>       at junit.framework.TestCase.run(TestCase.java:120)
>>       at junit.framework.TestSuite.runTest(TestSuite.java:228)
>>       at junit.framework.TestSuite.run(TestSuite.java:223)
>>       at
>> org 
>> .junit 
>> .internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
>>       at
>> org 
>> .apache 
>> .maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
>>       at
>> org 
>> .apache 
>> .maven 
>> .surefire 
>> .suite 
>> .AbstractDirectoryTestSuite 
>> .executeTestSet(AbstractDirectoryTestSuite.java:140)
>>       at
>> org 
>> .apache 
>> .maven 
>> .surefire 
>> .suite 
>> .AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java: 
>> 127)
>>       at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>       at
>> sun 
>> .reflect 
>> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>       at
>> sun 
>> .reflect 
>> .DelegatingMethodAccessorImpl 
>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>       at java.lang.reflect.Method.invoke(Method.java:585)
>>       at
>> org 
>> .apache 
>> .maven 
>> .surefire 
>> .booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
>>       at
>> org 
>> .apache 
>> .maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
>> Caused by: java.io.IOException: /user-manager/services/globalSettings
>>       at
>> org.apache.cxf.transport.http.HTTPConduit 
>> $WrappedOutputStream.handleResponse(HTTPConduit.java:1921)
>>       at
>> org.apache.cxf.transport.http.HTTPConduit 
>> $WrappedOutputStream.close(HTTPConduit.java:1824)
>>       at
>> org 
>> .apache 
>> .cxf 
>> .io 
>> .CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java: 
>> 47)
>>       at
>> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java: 
>> 159)
>>       at
>> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java: 
>> 66)
>>       at
>> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:583)
>>       at
>> org.apache.cxf.interceptor.MessageSenderInterceptor 
>> $ 
>> MessageSenderEndingInterceptor 
>> .handleMessage(MessageSenderInterceptor.java:62)
>>       ... 31 more
>>
>> Without the aegis beans I don't get any errors, just an empty  
>> HashMap.  I
>> was trying to use the Aegis data binding to get my HashMap across  
>> the wire.
>>
>> Thanks again.
>> Kit
>>
>> On May 23, 2008, at 3:41 PM, Benson Margulies wrote:
>>
>>> My first suggestion is to take out all the security stuff and see  
>>> what
>>> happens.
>>>
>>> Do you have CXFon both ends here?
>>>
>>> Also, can you tell me more about that awful thing happens when you
>>> change the config?
>>
>>


Re: Data Binding with a ...

Posted by Benson Margulies <bi...@gmail.com>.
OK, to start with, the unhappy HashMap is not such a surprise without
Aegis, as you have to use a type adapter with JAXB to deal with a hash
map.

The IO exception with Aegis -- now -- that's a surprise to me.

You don't want the XFire compatibility service configuration, but it's harmless.

How do you configure your client? Also JAXWS+Aegis, I trust?

I don't suppose you might be willing to try to cook up a test case we
could run and attach it to a JIRA?

I should also say that this is very faintly ringing a bell, and when
Dan sees this thread he might know what is going on. So I hate to ask
you to spend a lot of time on this until he wanders by.

On Fri, May 23, 2008 at 6:58 PM, Kit Plummer <ki...@gmail.com> wrote:
> Yes, CXF (same version, now 2.1) on both sides.
>
> So, with my config looking like this (notice didn't chance the jaxw:endpoint
> either):
>
> <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:wsa="http://cxf.apache.org/ws/addressing"
>        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">
>
>        <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" />
>
>        <bean id="aegisBean"
>                class="org.apache.cxf.aegis.databinding.AegisDatabinding"
>                scope="prototype" />
>        <bean id="jaxws-and-aegis-service-factory"
>                class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
>                scope="prototype">
>                <property name="dataBinding" ref="aegisBean" />
>                <!-- Use this property only for XFire compatibility -- this
> version for 2.0.x ...
>                        <property name="serviceConfigurations">
>                        <list>
>                        <bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
>                        <bean
> class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
>                        <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                        </list>
>                        </property>
>                -->
>                <!-- Use this property only for XFire compatibility -- this
> version for 2.1
>                        <property name="serviceConfigurations">
>                        <list>
>                        <bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
>                        <bean
> class="org.apache.cxf.aegis.databinding.XFireCompatibilityServiceConfiguration"/>
>                        <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                        </list>
>                        </property>
>                -->
>        </bean>
>        <jaxws:endpoint id="Controller"
>                implementor="com.accenture.manager.Controller"
> address="/controller" />
>
>        <jaxws:endpoint id="UserSettings"
>
>  implementor="com.accenture.manager.settings.UserSettingsManager"
>                address="/userSettings" />
>
>        <jaxws:endpoint id="GlobalSettings"
>
>  implementor="com.accenture.manager.settings.GlobalSettingsManager"
>                address="/globalSettings">
>
>                <!-- signed and encrypted -->
>                <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="Signature" />
>                                                <entry
> key="signaturePropFile"
>
>  value="server-sign.properties" />
>                                        </map>
>                                </constructor-arg>
>                        </bean>
>                </jaxws:inInterceptors>
>
>        </jaxws:endpoint>
> </beans>
>
> I get errors on the client side:
>
> May 23, 2008 3:55:16 PM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Could not send Message.
>        at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
>        at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:276)
>        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
>        at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>        at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:177)
>        at $Proxy31.addSetting(Unknown Source)
>        at
> com.XXXXXXX.nettoolkit.settings.NctGlobalSettings.setSetting(NctGlobalSettings.java:119)
>        at
> com.XXXXXXX.nettoolkit.test.NctGlobalSettingsAcceptanceTest.testGetSetting(NctGlobalSettingsAcceptanceTest.java:68)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at junit.framework.TestCase.runTest(TestCase.java:164)
>        at junit.framework.TestCase.runBare(TestCase.java:130)
>        at junit.framework.TestResult$1.protect(TestResult.java:110)
>        at junit.framework.TestResult.runProtected(TestResult.java:128)
>        at junit.framework.TestResult.run(TestResult.java:113)
>        at junit.framework.TestCase.run(TestCase.java:120)
>        at junit.framework.TestSuite.runTest(TestSuite.java:228)
>        at junit.framework.TestSuite.run(TestSuite.java:223)
>        at
> org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
>        at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
>        at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
>        at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
>        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
>        at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
> Caused by: java.io.IOException: /user-manager/services/globalSettings
>        at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1921)
>        at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1824)
>        at
> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
>        at
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159)
>        at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
>        at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:583)
>        at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>        ... 31 more
>
> Without the aegis beans I don't get any errors, just an empty HashMap.  I
> was trying to use the Aegis data binding to get my HashMap across the wire.
>
> Thanks again.
> Kit
>
> On May 23, 2008, at 3:41 PM, Benson Margulies wrote:
>
>> My first suggestion is to take out all the security stuff and see what
>> happens.
>>
>> Do you have CXFon both ends here?
>>
>> Also, can you tell me more about that awful thing happens when you
>> change the config?
>
>

Re: Data Binding with a ...

Posted by Kit Plummer <ki...@gmail.com>.
Yes, CXF (same version, now 2.1) on both sides.

So, with my config looking like this (notice didn't chance the  
jaxw:endpoint either):

<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:wsa="http://cxf.apache.org/ws/addressing"
	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">

	<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" />

	<bean id="aegisBean"
		class="org.apache.cxf.aegis.databinding.AegisDatabinding"
		scope="prototype" />
	<bean id="jaxws-and-aegis-service-factory"
		class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
		scope="prototype">
		<property name="dataBinding" ref="aegisBean" />
		<!-- Use this property only for XFire compatibility -- this version  
for 2.0.x ...
			<property name="serviceConfigurations">
			<list>
			<bean  
class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
			<bean  
class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/>
			<bean  
class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
			</list>
			</property>
		-->
		<!-- Use this property only for XFire compatibility -- this version  
for 2.1
			<property name="serviceConfigurations">
			<list>
			<bean  
class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
			<bean  
class 
= 
"org 
.apache.cxf.aegis.databinding.XFireCompatibilityServiceConfiguration"/>
			<bean  
class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
			</list>
			</property>
		-->
	</bean>
	<jaxws:endpoint id="Controller"
		implementor="com.accenture.manager.Controller" address="/ 
controller" />

	<jaxws:endpoint id="UserSettings"
		implementor="com.accenture.manager.settings.UserSettingsManager"
		address="/userSettings" />

	<jaxws:endpoint id="GlobalSettings"
		implementor="com.accenture.manager.settings.GlobalSettingsManager"
		address="/globalSettings">

		<!-- signed and encrypted -->
		<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="Signature" />
						<entry key="signaturePropFile"
							value="server-sign.properties" />
					</map>
				</constructor-arg>
			</bean>
		</jaxws:inInterceptors>

	</jaxws:endpoint>
</beans>

I get errors on the client side:

May 23, 2008 3:55:16 PM org.apache.cxf.phase.PhaseInterceptorChain  
doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
	at org.apache.cxf.interceptor.MessageSenderInterceptor 
$ 
MessageSenderEndingInterceptor 
.handleMessage(MessageSenderInterceptor.java:64)
	at  
org 
.apache 
.cxf 
.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:276)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 
177)
	at $Proxy31.addSetting(Unknown Source)
	at  
com 
.XXXXXXX 
.nettoolkit 
.settings.NctGlobalSettings.setSetting(NctGlobalSettings.java:119)
	at  
com 
.XXXXXXX 
.nettoolkit 
.test 
.NctGlobalSettingsAcceptanceTest 
.testGetSetting(NctGlobalSettingsAcceptanceTest.java:68)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:228)
	at junit.framework.TestSuite.run(TestSuite.java:223)
	at  
org 
.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java: 
35)
	at  
org 
.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java: 
62)
	at  
org 
.apache 
.maven 
.surefire 
.suite 
.AbstractDirectoryTestSuite 
.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at  
org 
.apache 
.maven 
.surefire 
.suite 
.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at  
org 
.apache 
.maven 
.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java: 
345)
	at  
org 
.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java: 
1009)
Caused by: java.io.IOException: /user-manager/services/globalSettings
	at org.apache.cxf.transport.http.HTTPConduit 
$WrappedOutputStream.handleResponse(HTTPConduit.java:1921)
	at org.apache.cxf.transport.http.HTTPConduit 
$WrappedOutputStream.close(HTTPConduit.java:1824)
	at  
org 
.apache 
.cxf 
.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java: 
47)
	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java: 
159)
	at  
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java: 
583)
	at org.apache.cxf.interceptor.MessageSenderInterceptor 
$ 
MessageSenderEndingInterceptor 
.handleMessage(MessageSenderInterceptor.java:62)
	... 31 more

Without the aegis beans I don't get any errors, just an empty  
HashMap.  I was trying to use the Aegis data binding to get my HashMap  
across the wire.

Thanks again.
Kit

On May 23, 2008, at 3:41 PM, Benson Margulies wrote:

> My first suggestion is to take out all the security stuff and see  
> what happens.
>
> Do you have CXFon both ends here?
>
> Also, can you tell me more about that awful thing happens when you
> change the config?


Re: Data Binding with a ...

Posted by Benson Margulies <bi...@gmail.com>.
My first suggestion is to take out all the security stuff and see what happens.

Do you have CXFon both ends here?

Also, can you tell me more about that awful thing happens when you
change the config?

Re: Data Binding with a ...

Posted by Kit Plummer <ki...@gmail.com>.
2.0.6

It is strange.  I can't do anything else to the endpoint - without  
killing the whole service.

Kit

On May 23, 2008, at 3:35 PM, Benson Margulies wrote:

> Kit,
>
> What version of CXF?
>
> --benson
>
>
> On Fri, May 23, 2008 at 6:25 PM, Kit Plummer <ki...@gmail.com>  
> wrote:
>> Hey,
>>
>> Beating my head on this...pardon my ignorance - new to CXF.
>>
>> I've got a simple service that looks like this:
>>
>> @WebService
>> public interface SettingsManager {
>>
>>   Boolean addSetting(@WebParam(name="namespace") String namespace,
>>                   @WebParam(name="settingName") String settingName,
>>                   @WebParam(name="settingValue") String  
>> settingValue);
>>
>>   String getSetting(@WebParam(name="namespace") String namespace,
>>                     @WebParam(name="settingName")String param);
>>
>>   HashMap<String, String>  
>> getAllSettings(@WebParam(name="namespace")String
>> namespace);
>>
>>   Boolean deleteSetting(@WebParam(name="namespace") String namespace,
>>                     @WebParam(name="settingName")String param);
>>
>>   List<String> list(@WebParam(name="namespace") String namespace);
>>
>> }
>>
>> With no special data bindings the HashMap returned by  
>> getAllsettings is
>> always empty.  So, tried to use the Aegis data binding, but as soon  
>> as I do
>> anything with my Spring config the service breaks completely.   
>> Here's the
>> snip from the config:
>>
>> <jaxws:endpoint id="GlobalSettings"
>>
>> implementor="com.accenture.manager.settings.GlobalSettingsManager"
>>                   address="/globalSettings">
>>
>>       <!-- signed and encrypted -->
>>       <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="Signature" />
>>                       <entry key="signaturePropFile"
>> value="server-sign.properties" />
>>                   </map>
>>               </constructor-arg>
>>           </bean>
>>       </jaxws:inInterceptors>
>>
>> </jaxws:endpoint>
>>
>> Any pointers to get me going in the right direction?  Maybe with a  
>> JAXB
>> configuration?
>>
>> TIA,
>> Kit
>>


Re: Data Binding with a ...

Posted by Benson Margulies <bi...@gmail.com>.
Kit,

What version of CXF?

--benson


On Fri, May 23, 2008 at 6:25 PM, Kit Plummer <ki...@gmail.com> wrote:
> Hey,
>
> Beating my head on this...pardon my ignorance - new to CXF.
>
> I've got a simple service that looks like this:
>
> @WebService
> public interface SettingsManager {
>
>    Boolean addSetting(@WebParam(name="namespace") String namespace,
>                    @WebParam(name="settingName") String settingName,
>                    @WebParam(name="settingValue") String settingValue);
>
>    String getSetting(@WebParam(name="namespace") String namespace,
>                      @WebParam(name="settingName")String param);
>
>    HashMap<String, String> getAllSettings(@WebParam(name="namespace")String
> namespace);
>
>    Boolean deleteSetting(@WebParam(name="namespace") String namespace,
>                      @WebParam(name="settingName")String param);
>
>    List<String> list(@WebParam(name="namespace") String namespace);
>
> }
>
> With no special data bindings the HashMap returned by getAllsettings is
> always empty.  So, tried to use the Aegis data binding, but as soon as I do
> anything with my Spring config the service breaks completely.  Here's the
> snip from the config:
>
> <jaxws:endpoint id="GlobalSettings"
>
>  implementor="com.accenture.manager.settings.GlobalSettingsManager"
>                    address="/globalSettings">
>
>        <!-- signed and encrypted -->
>        <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="Signature" />
>                        <entry key="signaturePropFile"
> value="server-sign.properties" />
>                    </map>
>                </constructor-arg>
>            </bean>
>        </jaxws:inInterceptors>
>
> </jaxws:endpoint>
>
> Any pointers to get me going in the right direction?  Maybe with a JAXB
> configuration?
>
> TIA,
> Kit
>

Re: Data Binding with a ...

Posted by Daniel Kulp <dk...@apache.org>.
Just FYI: Maps aren't directly supported with JAXB.   In 2.1, if you  
look in the java_first_jaxws sample, it shows what is needed to get  
Maps working.   You need to write a TypeAdapter for the it, but you  
can use the code in that sample as an example.   It's not very hard.   
That said, it won't work with 2.0.x.


Dan



On May 23, 2008, at 6:25 PM, Kit Plummer wrote:

> Hey,
>
> Beating my head on this...pardon my ignorance - new to CXF.
>
> I've got a simple service that looks like this:
>
> @WebService
> public interface SettingsManager {
>
>    Boolean addSetting(@WebParam(name="namespace") String namespace,
>                    @WebParam(name="settingName") String settingName,
>                    @WebParam(name="settingValue") String  
> settingValue);
>
>    String getSetting(@WebParam(name="namespace") String namespace,
>                      @WebParam(name="settingName")String param);
>
>    HashMap<String, String>  
> getAllSettings(@WebParam(name="namespace")String namespace);
>
>    Boolean deleteSetting(@WebParam(name="namespace") String namespace,
>                      @WebParam(name="settingName")String param);
>
>    List<String> list(@WebParam(name="namespace") String namespace);
>
> }
>
> With no special data bindings the HashMap returned by getAllsettings  
> is always empty.  So, tried to use the Aegis data binding, but as  
> soon as I do anything with my Spring config the service breaks  
> completely.  Here's the snip from the config:
>
> <jaxws:endpoint id="GlobalSettings"
>                     
> implementor="com.accenture.manager.settings.GlobalSettingsManager"
>                    address="/globalSettings">
>
>        <!-- signed and encrypted -->
>        <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="Signature" />
>                        <entry key="signaturePropFile" value="server- 
> sign.properties" />
>                    </map>
>                </constructor-arg>
>            </bean>
>        </jaxws:inInterceptors>
>
> </jaxws:endpoint>
>
> Any pointers to get me going in the right direction?  Maybe with a  
> JAXB configuration?
>
> TIA,
> Kit

---
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog