Hello,

 

I am a somewhat experienced Java / Spring developer but new to CXF. I am
trying to hook up a client and server using the simple frontend using these
spring configs:

 

SERVER:

 

<beans xmlns="http://www.springframework.org/schema/beans";

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:simple="http://cxf.apache.org/simple";

      xmlns:soap="http://cxf.apache.org/bindings/soap";
xmlns:context="http://www.springframework.org/schema/context";

      xmlns:cs="http://[www.mycompany.com]/coupon/service";

      xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

            http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd

            http://cxf.apache.org/simple
http://cxf.apache.org/schemas/simple.xsd

            http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd";

            default-autowire="byType"

            >

 

      <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-extension-http.xml" /> 

      <import
resource="classpath:META-INF/cxf/cxf-extension-http-binding.xml" /> 

      <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

      <import resource="classpath*:persistenceContext.xml" /> <!-my service
implementation -->

 

      <!--  serviceClass points to an interface -->

      <simple:server id="server" serviceBean="couponService"

            serviceClass="[com.mycompany].MyServiceInterface"

            bindingId="http://apache.org/cxf/binding/http";

            address="/${wsdl.path}"

            serviceName="cs:couponService"

            endpointName="cs:couponServicePort"

            >

            <simple:dataBinding>

                  <bean
class="org.apache.cxf.aegis.databinding.AegisDatabinding" />

            </simple:dataBinding>

            <simple:binding>

                  <soap:soapBinding version="1.2" mtomEnabled="true" />

            </simple:binding>

      </simple:server>

 

      <context:property-placeholder location="classpath:service.properties"
/>

</beans>

 

CLIENT:

 

<beans xmlns="http://www.springframework.org/schema/beans";

      xmlns:simple="http://cxf.apache.org/simple";
xmlns:soap="http://cxf.apache.org/bindings/soap";

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:aop="http://www.springframework.org/schema/aop";

      xmlns:context="http://www.springframework.org/schema/context";

      xmlns:oxm=http://www.springframework.org/schema/oxm

      xmlns:cs="http://[www.mycompany.com]/coupon/service";

      xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

            http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd

            http://cxf.apache.org/simple
http://cxf.apache.org/schemas/simple.xsd

            http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

            http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd

            http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd";

            default-autowire="byType"

            >

 

 

      <import resource="classpath:META-INF/cxf/cxf.xml" />

      <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" /> 

      <import
resource="classpath:META-INF/cxf/cxf-extension-http-binding.xml" /> 

      <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

 

 

      <simple:client id="couponService" wsdlLocation="${wsdl.url}?wsdl"

            serviceName="cs:couponService"

            endpointName="cs:couponServicePort"

            transportId="http://schemas.xmlsoap.org/soap/http";

            address="${wsdl.url}"

            bindingId="http://apache.org/cxf/binding/http";

            serviceClass="[com.mycompany].MyServiceInterface">

            <simple:dataBinding>

                  <bean
class="org.apache.cxf.aegis.databinding.AegisDatabinding" />

            </simple:dataBinding>

            <simple:binding>

                  <soap:soapBinding mtomEnabled="true" version="1.2" />

            </simple:binding>

      </simple:client>

 

      <context:property-placeholder location="classpath:service.properties"
/>

 

 

</beans>

 

On the client side, I inject the generated service into my web application
(I am using wicket but that should be irrelevant) and when I call service
methods on it I get an IllegalStateException from java.net.HttpURLConnection
saying the connection is already open. Here's the stack trace:

 

java.lang.IllegalStateException: IllegalStateException invoking
http://localhost:9999/services/coupon: Already connected

      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)

      at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcces
sorImpl.java:39)

      at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstruc
torAccessorImpl.java:27)

      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

      at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(H
TTPConduit.java:2058)

      at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPCond
uit.java:2048)

      at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)

      at
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639)

      at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInter
ceptor.handleMessage(MessageSenderInterceptor.java:62)

      at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain
.java:243)

      at
org.apache.cxf.binding.http.interceptor.DatabindingOutSetupInterceptor.handl
eMessage(DatabindingOutSetupInterceptor.java:91)

      at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain
.java:243)

      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:487)

      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)

      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)

      at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)

      at org.apache.cxf.frontend.ClientProxy.invoke(ClientProxy.java:68)

      at $Proxy30.createIndividualUserCouponsJob(Unknown Source)

      at
[com.mycompany].coupons.web.app.dummycontent.DummyContentInitializer.addSome
IndividualCoupons(DummyContentInitializer.java:84)

      at
[com.mycompany].coupons.web.app.dummycontent.DummyContentInitializer.addSome
Coupons(DummyContentInitializer.java:68)

      at
[com.mycompany].coupons.web.app.dummycontent.DummyContentInitializer.init(Du
mmyContentInitializer.java:50)

      at
org.apache.wicket.Application.callInitializers(Application.java:843)

      at
org.apache.wicket.Application.initializeComponents(Application.java:678)

      at
org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:725)

      at
org.apache.wicket.protocol.http.WicketServlet.init(WicketServlet.java:219)

      at javax.servlet.GenericServlet.init(GenericServlet.java:241)

      at
org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433)

      at
org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256)

      at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)

      at
org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:617)

      at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)

      at
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)

      at
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)

      at
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)

      at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)

      at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)

      at org.mortbay.jetty.Server.doStart(Server.java:220)

      at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)

      at [com.mycompany].coupons.web.test.Start.main(Start.java:45)

Caused by: java.lang.IllegalStateException: Already connected

      at
java.net.HttpURLConnection.setFixedLengthStreamingMode(HttpURLConnection.jav
a:103)

      at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.thresholdNotRe
ached(HTTPConduit.java:1889)

      at
org.apache.cxf.io.AbstractThresholdOutputStream.close(AbstractThresholdOutpu
tStream.java:99)

      at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPCond
uit.java:1980)

 

This happens the first time a service call is made, and the only
URLConnection that is opened before that is that of the wsdl (I put a
breakpoint in the constructor of HttpURLConnection).

 

I have searched the web for similar problems, but all I found was a bug
using rest that has already been fixed.

I am trying to use the simple frontend, as my service is not annotated with
jax-ws annotations and I would like to keep it that way.

 

Can someone help? Thanks in advance.

 

Sean

 

 

-- 

MostlyMagic.com - Sean Patrick Floyd

IT-Consultant und Senior Java Developer

Mobile: +49 170 4746496

Mail:   [email protected]

Web:    www.mostlymagic.com

XING:   https://www.xing.com/profile/SeanPatrick_Floyd

GULP:   http://www.gulp.de/Profil/mostlymagic.html

 

Reply via email to