Am Dienstag, den 04.12.2007, 01:29 +0800 schrieb tog: > Here is an example that give an exception with the StrikeIron free > webservice (you just need to register) when using the dynamic client. > Should I raise a JIRA ? >
Yes, please, and include the code sample below (or link to the email.) No guarantees when it will get fixed, however, as Dan said the non-workaround solution is rather complex. Thanks, Glen > Cheers > Guillaume > > import org.apache.cxf.endpoint.Client; > import org.apache.cxf.endpoint.dynamic.DynamicClientFactory; > import org.apache.cxf.interceptor.LoggingInInterceptor; > import org.apache.cxf.interceptor.LoggingOutInterceptor; > import org.apache.cxf.transport.http.HTTPConduit; > import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; > > import java.lang.reflect.Field; > > > /** > * Created by IntelliJ IDEA. > * User: alleon > * Date: Dec 4, 2007 > * Time: 12:20:04 AM > * To change this template use File | Settings | File Templates. > */ > public class NFLTeam { > private Client client = null; > > void execute(String myURL) throws ClassNotFoundException, > IllegalAccessException, InstantiationException, NoSuchFieldException { > client = > DynamicClientFactory.newInstance().createClient(myURL, > Thread.currentThread().getContextClassLoader()); > > client.getOutInterceptors().add(new LoggingOutInterceptor()); > client.getInInterceptors().add(new LoggingInInterceptor()); > > HTTPConduit conduit = (HTTPConduit) client.getConduit(); > > HTTPClientPolicy httpClientPolicy = conduit.getClient(); > httpClientPolicy.setAllowChunking(false); > conduit.setClient(httpClientPolicy); > > Object obj = > Thread.currentThread().getContextClassLoader().loadClass("com.strikeiron.GetTeamInfoByCity").newInstance(); > Class clazz = obj.getClass(); > for (Field fi:clazz.getDeclaredFields()) { > System.out.println(fi.getName()); > } > > Field af = null; > af = clazz.getDeclaredField("userID"); > af.setAccessible(true); > af.set(obj, "YOURLOGIN"); > > af = clazz.getDeclaredField("password"); > af.setAccessible(true); > af.set(obj, "YOURPASSWD"); > > af = clazz.getDeclaredField("city"); > af.setAccessible(true); > af.set(obj, "New York"); > > > try { > Object[] response = client.invoke("GetTeamInfoByCity", obj); > > // TODO Parse the answer > > } catch (Exception e) { > e.printStackTrace(); > } > } > > public static void main(String[] args) { > NFLTeam nflt = new NFLTeam(); > try { > nflt.execute("http://sdpwsparam.strikeiron.com/sdpNFLTeams?WSDL"); > } catch (ClassNotFoundException e) { > e.printStackTrace(); //To change body of catch statement > use File | Settings | File Templates. > } catch (IllegalAccessException e) { > e.printStackTrace(); //To change body of catch statement > use File | Settings | File Templates. > } catch (InstantiationException e) { > e.printStackTrace(); //To change body of catch statement > use File | Settings | File Templates. > } catch (NoSuchFieldException e) { > e.printStackTrace(); //To change body of catch statement > use File | Settings | File Templates. > } > } > > } > > > Dec 4, 2007 1:21:44 AM > org.springframework.context.support.AbstractApplicationContext > prepareRefresh > INFO: Refreshing > [EMAIL PROTECTED]: display name > [EMAIL PROTECTED]; startup date > [Tue Dec 04 01:21:44 SGT 2007]; root of context hierarchy > Dec 4, 2007 1:21:44 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-soap.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-management.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-rm.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-addr.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-http-binding.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-jms.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-jaxws.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-local.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-http-jetty.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-http.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-object-binding.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-http.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.support.DefaultListableBeanFactory > registerBeanDefinition > INFO: Overriding bean definition for bean > 'org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory': > replacing [Root bean: class > [org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory]; > scope=singleton; abstract=false; lazyInit=true; > autowireCandidate=true; autowireMode=0; dependencyCheck=0; > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > destroyMethodName=null; defined in class path resource > [META-INF/cxf/cxf-extension-http.xml]] with [Root bean: class > [org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory]; > scope=singleton; abstract=false; lazyInit=true; > autowireCandidate=true; autowireMode=0; dependencyCheck=0; > factoryBeanName=null; factoryMethodName=null; initMethodName=null; > destroyMethodName=null; defined in class path resource > [META-INF/cxf/cxf-extension-http.xml]] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-policy.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.xml.XmlBeanDefinitionReader > loadBeanDefinitions > INFO: Loading XML bean definitions from class path resource > [META-INF/cxf/cxf-extension-xml.xml] > Dec 4, 2007 1:21:45 AM > org.springframework.context.support.AbstractApplicationContext > obtainFreshBeanFactory > INFO: Bean factory for application context > [EMAIL PROTECTED]: > [EMAIL PROTECTED] > Dec 4, 2007 1:21:45 AM > org.springframework.context.support.AbstractApplicationContext$BeanPostProcessorChecker > postProcessAfterInitialization > INFO: Bean 'org.apache.cxf.bus.spring.Jsr250BeanPostProcessor' is not > eligible for getting processed by all BeanPostProcessors (for example: > not eligible for auto-proxying) > Dec 4, 2007 1:21:45 AM > org.springframework.context.support.AbstractApplicationContext$BeanPostProcessorChecker > postProcessAfterInitialization > INFO: Bean 'org.apache.cxf.bus.spring.BusExtensionPostProcessor' is > not eligible for getting processed by all BeanPostProcessors (for > example: not eligible for auto-proxying) > Dec 4, 2007 1:21:45 AM > org.springframework.beans.factory.support.DefaultListableBeanFactory > preInstantiateSingletons > INFO: Pre-instantiating singletons in > [EMAIL PROTECTED]: > defining beans > [cxf,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.management.jmx.InstrumentationManagerImpl,org.apache.cxf.ws.rm.RMManager,org.apache.cxf.ws.rm.policy.RMPolicyInterceptorProvider,org.apache.cxf.ws.rm.RMAssertionBuilder,org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder,org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider,org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder,org.apache.cxf.binding.http.HttpBindingFactory,org.apache.cxf.transport.jms.JMSTransportFactory,org.apache.cxf.jaxws.context.WebServiceContextResourceResolver,org.apache.cxf.transport.local.LocalTransportFactory,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory,org.apache.cxf.binding.object.ObjectBindingFactory,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder#1,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder#1,org.apache.cxf.ws.policy.AssertionBuilderRegistry,org.apache.cxf.ws.policy.PolicyConstants,org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry,org.apache.cxf.ws.policy.attachment.external.DomainExpressionBuilderRegistry,org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDomainExpressionBuilder,org.apache.cxf.ws.policy.PolicyBuilder,org.apache.cxf.ws.policy.PolicyEngine,org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider,org.apache.cxf.ws.policy.attachment.ServiceModelPolicyProvider,org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder,org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider,org.apache.cxf.binding.xml.XMLBindingFactory]; > root of factory hierarchy > Dec 4, 2007 1:21:45 AM org.apache.cxf.configuration.spring.ConfigurerImpl > <init> > INFO: Could not find the configuration file cxf.xml on the classpath. > Dec 4, 2007 1:21:53 AM > org.apache.cxf.endpoint.dynamic.DynamicClientFactory outputDebug > INFO: Created classes: com.strikeiron.ArrayOfNFLTeamInfo, > com.strikeiron.ArrayOfSIWsStatus, > com.strikeiron.ArrayOfServiceInfoRecord, > com.strikeiron.GetAllStatuses, com.strikeiron.GetAllStatusesResponse, > com.strikeiron.GetAllTeamNicknames, > com.strikeiron.GetAllTeamNicknamesResponse, > com.strikeiron.GetServiceInfo, com.strikeiron.GetServiceInfoResponse, > com.strikeiron.GetTeamInfoByCity, > com.strikeiron.GetTeamInfoByCityResponse, > com.strikeiron.GetTeamInfoByNickname, > com.strikeiron.GetTeamInfoByNicknameResponse, > com.strikeiron.NFLTeamInfo, com.strikeiron.NFLTeamOutput, > com.strikeiron.NFLTeamResult, com.strikeiron.ObjectFactory, > com.strikeiron.SILicenseInfo, com.strikeiron.SIServiceInfoResult, > com.strikeiron.SISubscriptionInfo, com.strikeiron.SIWsResult, > com.strikeiron.SIWsStatus, com.strikeiron.ServiceInfoOutput, > com.strikeiron.ServiceInfoRecord, com.strikeiron.ServiceOutput, > com.strikeiron.StatusCodeOutput, com.strikeiron.StatusCodeResult > userID > password > city > Dec 4, 2007 1:21:55 AM org.apache.cxf.phase.PhaseInterceptorChain doIntercept > INFO: Interceptor has thrown exception, unwinding now > org.apache.cxf.interceptor.Fault: Marshalling Error: Instance of > "com.strikeiron.GetTeamInfoByCity" is substituting "java.lang.String", > but "com.strikeiron.GetTeamInfoByCity" is bound to an anonymous type. > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:187) > at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:51) > at > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:84) > at > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:180) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:200) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:186) > at NFLTeam.execute(NFLTeam.java:54) > at NFLTeam.main(NFLTeam.java:66) > Caused by: javax.xml.bind.MarshalException > - with linked exception: > [com.sun.istack.SAXException2: Instance of > "com.strikeiron.GetTeamInfoByCity" is substituting "java.lang.String", > but "com.strikeiron.GetTeamInfoByCity" is bound to an anonymous type.] > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:295) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:221) > at > javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:70) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:330) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:167) > ... 11 more > Caused by: com.sun.istack.SAXException2: Instance of > "com.strikeiron.GetTeamInfoByCity" is substituting "java.lang.String", > but "com.strikeiron.GetTeamInfoByCity" is bound to an anonymous type. > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:225) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:597) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:93) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:127) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:244) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:251) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:33) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:461) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:292) > ... 15 more > org.apache.cxf.interceptor.Fault: Marshalling Error: Instance of > "com.strikeiron.GetTeamInfoByCity" is substituting "java.lang.String", > but "com.strikeiron.GetTeamInfoByCity" is bound to an anonymous type. > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:187) > at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:51) > at > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:84) > at > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:180) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:200) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:186) > at NFLTeam.execute(NFLTeam.java:54) > at NFLTeam.main(NFLTeam.java:66) > Caused by: javax.xml.bind.MarshalException > - with linked exception: > [com.sun.istack.SAXException2: Instance of > "com.strikeiron.GetTeamInfoByCity" is substituting "java.lang.String", > but "com.strikeiron.GetTeamInfoByCity" is bound to an anonymous type.] > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:295) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:221) > at > javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:70) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:330) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:167) > ... 11 more > Caused by: com.sun.istack.SAXException2: Instance of > "com.strikeiron.GetTeamInfoByCity" is substituting "java.lang.String", > but "com.strikeiron.GetTeamInfoByCity" is bound to an anonymous type. > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:225) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:597) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:93) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:127) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:244) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:251) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:33) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:461) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:292) > ... 15 more > > > > >