[
https://issues.apache.org/jira/browse/CXF-3508?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13033470#comment-13033470
]
Monish Unni commented on CXF-3508:
----------------------------------
we extend org.apache.cxf.jaxws.JaxWsClientProxy to create different proxies
based on a service type where in we customize the interceptors. to this end we
have spring injection initialize the transport factory to which we provide the
transport ids.
so this allows us to switch protocols, host and port and cherry pick
interceptors for our service type.
at this point it's kind of difficult to provide any source code as there's some
proprietary code.
suggest having a spring config like the above and extending a class that allows
you to set the protocol -or setAddress on the JaxWsClientProxy - explicitly
and/or change transportIds and bindings(Ids).
regards,
> Local Transport Factory and HTTP Transport Factory not compatible in
> cxf-2.4.0 was working in cxf-2.3.3
> --------------------------------------------------------------------------------------------------------
>
> Key: CXF-3508
> URL: https://issues.apache.org/jira/browse/CXF-3508
> Project: CXF
> Issue Type: Bug
> Components: Integration, JAX-WS Runtime
> Affects Versions: 2.4
> Environment: any JVM based OS that can run cxf stack
> Reporter: Monish Unni
> Labels: test
>
> with the following definition if i try to use the "local://" protocol , i get
> the error as stated below ( the spring definition )
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <bean class="org.apache.cxf.transport.http.HTTPTransportFactory"
> lazy-init="true">
> <property name="transportIds">
> <list>
> <value>http://cxf.apache.org/bindings/xformat</value>
> <value>http://schemas.xmlsoap.org/soap/http</value>
> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
> </list>
> </property>
> </bean>
> <bean class="org.apache.cxf.transport.local.LocalTransportFactory"
> lazy-init="true">
> <property name="transportIds">
> <list>
> <value>http://cxf.apache.org/transports/local</value>
> </list>
> </property>
> </bean>
> WARN org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for
> {http://web.state.org/}Echo#{http://web.state.org/}echo has thrown exception,
> unwinding now
> org.apache.cxf.interceptor.Fault: Could not send Message.
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:48)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
> at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:484)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:414)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:269)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
> at $Proxy39.echo(Unknown Source)
> 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:597)
> at
> org.state.gov.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
> at
> org.state.gov.cxf.jaxws.JaxwsClientProxyTest.testJaxWsProxy(JaxwsClientProxyTest.java:49)
> 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:597)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
> at
> org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
> at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
> at
> org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
> at
> org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
> at
> org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> at
> org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
> at
> org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> at
> org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
> 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:597)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
> Caused by: java.net.MalformedURLException: unknown protocol: local
> at java.net.URL.<init>(URL.java:574)
> at java.net.URL.<init>(URL.java:464)
> at java.net.URL.<init>(URL.java:413)
> at
> org.apache.cxf.transport.http.HTTPConduit.setupURL(HTTPConduit.java:655)
> at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:455)
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
> ... 48 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira