[ 
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

Reply via email to