I've never really seen this error before with CXF. Is there any way you can create a small sample that shows it?
Also, what version of CXF and what version of the JDK? If not using the latest of each, definitely try updating. Dan On Thursday 17 June 2010 6:21:33 am Sean Patrick Floyd wrote: > 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(NativeConstructorAcce > s sorImpl.java:39) > > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstru > c 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(HTTPCon > d 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$MessageSenderEndingInte > r ceptor.handleMessage(MessageSenderInterceptor.java:62) > > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai > n .java:243) > > at > org.apache.cxf.binding.http.interceptor.DatabindingOutSetupInterceptor.hand > l eMessage(DatabindingOutSetupInterceptor.java:91) > > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai > n .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.addSom > e IndividualCoupons(DummyContentInitializer.java:84) > > at > [com.mycompany].coupons.web.app.dummycontent.DummyContentInitializer.addSom > e Coupons(DummyContentInitializer.java:68) > > at > [com.mycompany].coupons.web.app.dummycontent.DummyContentInitializer.init(D > u 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.ja > v a:103) > > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.thresholdNotR > e ached(HTTPConduit.java:1889) > > at > org.apache.cxf.io.AbstractThresholdOutputStream.close(AbstractThresholdOutp > u tStream.java:99) > > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPCon > d 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 -- Daniel Kulp [email protected] http://dankulp.com/blog
