On Monday, July 25, 2011 12:53:37 PM Algirdas Veitas wrote: > Will give that a shot, but it looks like this is the same issue as > https://issues.apache.org/jira/browse/CXF-3075, and according the entry was > fixed in 2.3.1. Were there more changes since then?
For the client creation, there is: https://issues.apache.org/jira/browse/CXF-3558 which is in 2.3.5. Ideally, you'd move right to 2.4.1. It's definitely easier to debug things from my side there. Dan > > Al > > On Mon, Jul 25, 2011 at 12:48 PM, Daniel Kulp <[email protected]> wrote: > > Can you move up to 2.3.5? We did add some synchronized blocks around > > the ReflectionServiceFactoryBean to make the singleton cases work a lot > > better. That may fix this issue. > > > > Dan > > > > On Monday, July 25, 2011 12:35:11 PM Algirdas Veitas wrote: > > > More information....after doing some additional testing, it looks > > > like > > > > the > > > > > exception is thrown in different areas of the CXF code, but the > > > ConcurrentModificationException is thrown when trying to manipulate > > > the > > > > > > private List<AbstractServiceConfiguration> > > > serviceConfigurations = > > > > > > new ArrayList<AbstractServiceConfiguration>(); > > > > > > that belongs to ReflectionServiceFactoryBean....see stack traces > > > below > > > > for > > > > > additional samples: > > > > > > Caused by: java.util.ConcurrentModificationException > > > > > > at > > > > > > java.util.AbstractList$Itr.checkForComodification(AbstractList.java: > > > 372) > > > > > > at java.util.AbstractList$Itr.next(AbstractList.java:343) > > > at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createInputW > > rapp > > > > > edMessageParts(ReflectionServiceFactoryBean.java:1619) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createOperat > > ion( > > > > > ReflectionServiceFactoryBean.java:934) at > > > > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.createOperation(Jax > > WsSe > > > > > rviceFactoryBean.java:616) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createInterf > > ace( > > > > > ReflectionServiceFactoryBean.java:907) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildService > > From > > > > > Class(ReflectionServiceFactoryBean.java:433) at > > > > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromCla > > ss(J > > > > > axWsServiceFactoryBean.java:680) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeSe > > rvic > > > > > eModel(ReflectionServiceFactoryBean.java:505) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Refle > > ctio > > > > > nServiceFactoryBean.java:242) at > > > > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsService > > Fact > > > > > oryBean.java:202) at > > > > org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint( > > Abst > > > > > ractWSDLBasedEndpointFactory.java:101) at > > > > org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java: > > 90) > > > > > at > > > > org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactory > > Bean > > > > > .java:117 > > > > > > Caused by: java.util.ConcurrentModificationException > > > > > > at > > > > > > java.util.AbstractList$Itr.checkForComodification(AbstractList.java: > > > 372) > > > > > > at java.util.AbstractList$Itr.next(AbstractList.java:343) > > > at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.addFault(Ref > > lect > > > > > ionServiceFactoryBean.java:2032) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeFa > > ults > > > > > (ReflectionServiceFactoryBean.java:2011) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createMessag > > ePar > > > > > ts(ReflectionServiceFactoryBean.java:1575) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createOperat > > ion( > > > > > ReflectionServiceFactoryBean.java:928) at > > > > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.createOperation(Jax > > WsSe > > > > > rviceFactoryBean.java:616) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createInterf > > ace( > > > > > ReflectionServiceFactoryBean.java:907) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildService > > From > > > > > Class(ReflectionServiceFactoryBean.java:433) at > > > > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromCla > > ss(J > > > > > axWsServiceFactoryBean.java:680) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeSe > > rvic > > > > > eModel(ReflectionServiceFactoryBean.java:505) at > > > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Refle > > ctio > > > > > nServiceFactoryBean.java:242) at > > > > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsService > > Fact > > > > > oryBean.java:202) at > > > > org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint( > > Abst > > > > > ractWSDLBasedEndpointFactory.java:101) at > > > > org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java: > > 90) > > > > > at > > > > org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactory > > Bean > > > > > .java:117) at > > > > org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean. > > java > > > > > :124) > > > > > > On Mon, Jul 25, 2011 at 11:30 AM, Algirdas Veitas > > > <[email protected] > > > > > >wrote: > > > > whoops...in the previous post...we mentioned 2.1.3 but we are > > > > using > > > > 2.3.1 > > > > > > > > On Mon, Jul 25, 2011 at 10:36 AM, Algirdas Veitas > > > > <[email protected]>wrote: > > > >> Hi Daniel, > > > >> > > > >> Unfortunately, we are unable to reproduce this problem in an > > > >> isolated environment. But at this point, it does look like > > > >> to be an issue with multiple threads using the same instance > > > >> of the client. Because we are > > > >> unable to reproduce, our current strategy is to create a > > > >> separate > > > >> client per SOAP call. > > > >> > > > >> Using the following documentation as a guideline > > > >> http://cxf.apache.org/docs/jax-ws-configuration.html, we came > > > >> up with the following: > > > >> > > > >> Here was the original configuration for the client: > > > >> > > > >> > > > >> <jaxws:client id="xService" serviceClass="com.XService" > > > >> address="#xServiceUrl" > > > >> </jaxws:client> > > > >> > > > >> Here is what we just tried: > > > >> > > > >> <bean id="xServiceProxyFactory" > > > >> > > > >> class="org.apache.cxf.jaxws. > > > >> > > > >> JaxWsProxyFactoryBean"> > > > >> > > > >> <property name="serviceClass" > > > >> value="com.XService"/> > > > >> <property name="address" ref="xServiceUrl"/> > > > >> > > > >> </bean> > > > >> > > > >> <bean id="xService" scope="prototype" class="com.XService" > > > >> > > > >> factory-bean="xServiceProxyFactory > > > >> " > > > >> > > > >> factory-method="create"/> > > > >> > > > >> Notice that the xService bean is a prototype, so we get a new > > > >> instance for each request made, to avoid the original issue > > > >> we were seeing. > > > >> > > > >> Now in our code we have a class that looks like this: > > > >> > > > >> public class xServiceHelperImpl implements BeanFactoryAware > > > >> { > > > >> > > > >> @Autowired > > > >> @Qualifier(value="xServiceProxyFactory") > > > >> private JaxWsProxyFactoryBean proxyFactoryBean; > > > >> > > > >> @Override > > > >> public void setBeanFactory(BeanFactory beanFactory) > > > >> throws > > > >> > > > >> BeansException { > > > >> > > > >> this.beanFactory=beanFactory; > > > >> > > > >> } > > > >> > > > >> private xService getXService() { > > > >> > > > >> xService xService = > > > >> > > > >> (xService)this.beanFactory.getBean("xService"); > > > >> > > > >> return xService; > > > >> > > > >> } > > > >> > > > >> } > > > >> > > > >> And we have a JUnit test that spawns multiple threads that > > > >> basically > > > >> calls "getXService()" and then invokes a web service call. > > > >> > > > >> When there is just 1 thread configured in the test, everything > > > >> works > > > >> fine. > > > >> > > > >> When there are 2 threads configured in the test, we start > > > >> getting > > > >> errors, it is a ConcurrentModificationExcpeiton, but in a > > > >> different > > > >> place then where we saw before :(....here is the stack trace > > > >> > > > >> org.springframework.beans.factory.BeanCreationException: Error > > > >> creating > > > >> bean with name 'xService' defined in class path resource > > > >> [spring/myCxfClient.xml]: Instantiation of bean failed; nested > > > >> exception is > > > >> org.springframework.beans.factory.BeanDefinitionStoreException > > > >> : > > > >> Factory method [public java.lang.Object > > > >> org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create()] threw > > > >> exception; nested exception is > > > >> java.util.ConcurrentModificationException > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.ConstructorResolver. > > > >> instanti ateUsingFactoryMethod(ConstructorResolver.java:581) > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.AbstractAutowireCapa > > > >> bleBeanF > > > >> actory.instantiateUsingFactoryMethod(AbstractAutowireCapableB > > > >> eanFactor y.java:983) > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.AbstractAutowireCapa > > > >> bleBeanF > > > >> actory.createBeanInstance(AbstractAutowireCapableBeanFactory. > > > >> java:879) > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.AbstractAutowireCapa > > > >> bleBeanF > > > >> actory.doCreateBean(AbstractAutowireCapableBeanFactory.java:4 > > > >> 85) > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.AbstractAutowireCapa > > > >> bleBeanF > > > >> actory.createBean(AbstractAutowireCapableBeanFactory.java:456 > > > >> ) > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.AbstractBeanFactory. > > > >> doGetBea n(AbstractBeanFactory.java:310) > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.AbstractBeanFactory. > > > >> getBean( AbstractBeanFactory.java:190) > > > >> > > > >> at > > > >> com.XServiceHelperImpl.getXService(xServiceHelperImpl. > > > >> java:21 > > > >> 7) > > > >> at > > > >> com.XServiceHelperImpl.getX(xServiceHelperImpl.java:6 > > > >> 3) > > > >> at > > > >> > > > >> com..ITXServiceHelperImplTest$ITUserReadOnlyClient.run(ITUserS > > > >> erviceHe lperImplTest.java:101) > > > >> > > > >> at java.lang.Thread.run(Thread.java:662) > > > >> > > > >> Caused by: > > > >> org.springframework.beans.factory.BeanDefinitionStoreException > > > >> : > > > >> Factory method [public java.lang.Object > > > >> org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create()] threw > > > >> exception; nested exception is > > > >> java.util.ConcurrentModificationException > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.SimpleInstantiationS > > > >> trategy. instantiate(SimpleInstantiationStrategy.java:157) > > > >> > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.ConstructorResolver. > > > >> instanti ateUsingFactoryMethod(ConstructorResolver.java:570) > > > >> > > > >> ... 10 more > > > >> > > > >> Caused by: java.util.ConcurrentModificationException > > > >> > > > >> at > > > >> > > > >> java.util.AbstractList$Itr.checkForComodification(AbstractList > > > >> .java:37 2) > > > >> > > > >> at > > > >> java.util.AbstractList$Itr.next(AbstractList.java:343 > > > >> ) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.cr > > > >> eateInpu > > > >> tWrappedMessageParts(ReflectionServiceFactoryBean.java:1619) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.cr > > > >> eateOper ation(ReflectionServiceFactoryBean.java:934) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.createOpe > > > >> ration(J axWsServiceFactoryBean.java:616) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.cr > > > >> eateInte rface(ReflectionServiceFactoryBean.java:907) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.bu > > > >> ildServi ceFromClass(ReflectionServiceFactoryBean.java:433) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServ > > > >> iceFromC lass(JaxWsServiceFactoryBean.java:680) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.in > > > >> itialize ServiceModel(ReflectionServiceFactoryBean.java:505) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.cr > > > >> eate(Ref lectionServiceFactoryBean.java:242) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(Ja > > > >> xWsServi ceFactoryBean.java:202) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.creat > > > >> eEndpoin t(AbstractWSDLBasedEndpointFactory.java:101) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactory > > > >> Bean.jav a:90) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientPr > > > >> oxyFacto ryBean.java:117) > > > >> > > > >> at > > > >> > > > >> org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFa > > > >> ctoryBea n.java:124) > > > >> > > > >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > > > >> Method) > > > >> at > > > >> > > > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess > > > >> orImpl.j ava:39) > > > >> > > > >> at > > > >> > > > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth > > > >> odAccess orImpl.java:25) > > > >> > > > >> at java.lang.reflect.Method.invoke(Method.java:597) > > > >> at > > > >> > > > >> org.springframework.beans.factory.support.SimpleInstantiationS > > > >> trategy. instantiate(SimpleInstantiationStrategy.java:145) > > > >> > > > >> ... 11 more > > > >> > > > >> Are we not configuring our client correctly? Just to > > > >> reiterate we are using 2.1.3. > > > >> > > > >> Thanks, > > > >> Al > > > >> > > > >> On Fri, Jul 22, 2011 at 5:09 PM, Daniel Kulp > > > >> <[email protected]> > > > > wrote: > > > >>> On Friday, July 22, 2011 4:16:39 PM Algirdas Veitas wrote: > > > >>> > Small world :) > > > >>> > > > > >>> > RE: Hmm... with #3, you shouldn't even be hitting this. > > > >>> > The > > > >>> > > > >>> HEADER_LIST > > > >>> > > > >>> > should > > > >>> > be completely created per request since it wouldn't be > > > >>> > pulled > > > >>> > from the request > > > >>> > context. However, if the HEADER_LIST is added to the > > > >>> > request > > > >>> > > > >>> context at > > > >>> > > > >>> > ANY time, even using #3 after that would cause an issue. > > > >>> > If you > > > >>> > aren't touching the HEADER_LIST anywhere, then I'm not > > > >>> > really > > > >>> > sure what is > > > >>> > > > >>> going > > > >>> > > > >>> > on. > > > >>> > > > > >>> > Yeah, we are not manipulating the HEADER_LIST anywhere > > > >>> > in our > > > >>> > code, so > > > >>> > > > >>> am > > > >>> > > > >>> > not sure what is going on either.... > > > >>> > > > > >>> > RE: 2) After returning from any method where you had set > > > >>> > a > > > >>> > header, > > > >>> > > > >>> call: * > > > >>> > > > >>> > context*.getMessageContext().remove(Header.HEADER_LIST); > > > >>> > > > > >>> > How do I get a handle to the "context", in our situation > > > >>> > where > > > >>> > we are > > > >>> > > > >>> using > > > >>> > > > >>> > generated code? > > > >>> > > > >>> Sorry. That would be the actual proxy object. For > > > >>> example: > > > >>> > > > >>> MyServiceInterface proxy = service.getMyServicePort(); > > > >>> ((BindingProvider)proxy).getRequestContext()..... > > > >>> > > > >>> With JAX-WS, all the proxys implement not only the generated > > > >>> interface, > > > >>> but > > > >>> also the BindingProvider interface. > > > >>> > > > >>> > > > >>> Dan > > > >>> > > > >>> > Thanks, > > > >>> > Al > > > >>> > > > > >>> > On Fri, Jul 22, 2011 at 4:04 PM, Daniel Kulp > > > >>> > <[email protected]> > > > > wrote: > > > >>> > > On Friday, July 22, 2011 3:58:06 PM Algirdas Veitas wrote: > > > >>> > > > Hi Daniel, > > > >>> > > > > > > >>> > > > Nice meeting you as well! > > > >>> > > > > > >>> > > Just discovered you and I went to Northeastern at > > > >>> > > roughly > > > >>> > > the same > > > >>> > > > >>> time. > > > >>> > > > >>> > > We > > > >>> > > may have met before. :-) > > > >>> > > > > > >>> > > > One follow up question....the way we are adding > > > >>> > > > headers > > > >>> > > > is #3. Our generated client code treats our > > > >>> > > > headers > > > >>> > > > like an ordinary parameter in > > > >>> > > > > > >>> > > the > > > >>> > > > > > >>> > > > method signature. Will your solution work for > > > >>> > > > this > > > >>> > > > strategy as > > > >>> > > > well? > > > >>> > > > > > >>> > > Hmm... with #3, you shouldn't even be hitting this. > > > >>> > > The > > > >>> > > HEADER_LIST should > > > >>> > > be completely created per request since it wouldn't > > > >>> > > be > > > >>> > > pulled from > > > >>> > > > >>> the > > > >>> > > > >>> > > request > > > >>> > > context. However, if the HEADER_LIST is added to > > > >>> > > the > > > >>> > > request > > > >>> > > > >>> context > > > >>> > > > >>> > > at > > > >>> > > > > > >>> > > ANY time, even using #3 after that would cause an > > > >>> > > issue. If > > > >>> > > you > > > >>> > > > >>> aren't > > > >>> > > > >>> > > touching the HEADER_LIST anywhere, then I'm not > > > >>> > > really sure > > > >>> > > what is > > > >>> > > going > > > >>> > > on. > > > >>> > > Strange. Definitely give it a try though. > > > >>> > > > > > >>> > > > > > >>> > > Dan > > > >>> > > > > > >>> > > > Al > > > >>> > > > > > > >>> > > > On Fri, Jul 22, 2011 at 3:45 PM, Daniel Kulp > > > >>> > > > <[email protected]> > > > >>> > > > >>> wrote: > > > >>> > > > > We talked briefly about this at lunch today > > > >>> > > > > (nice to > > > >>> > > > > meet you > > > >>> > > > > Al!) but wanted > > > >>> > > > > to follow up here..... > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > The per-proxy request context can definitely > > > >>> > > > > come > > > >>> > > > > into play > > > >>> > > > > here. If any of > > > >>> > > > > the threads add a header list to the > > > >>> > > > > RequestContext > > > >>> > > > > via the > > > >>> > > > > method > > > >>> > > > > mentioned > > > >>> > > > >>> > > > > in #4 of: > > > >>> http://cxf.apache.org/faq#FAQ-HowcanIaddsoapheaderstotherequ > > > >>> est%2Fre spon > > > >>> > > > >>> > > > > se%3F > > > >>> > > > > > > > >>> > > > > then those headers would be sent on all > > > >>> > > > > methods > > > >>> > > > > called on the > > > >>> > > > > proxy. > > > >>> > > > > > > > >>> > > > > What's worse, I THINK that List is just > > > >>> > > > > copied into > > > >>> > > > > the real > > > >>> > > > > message > > > >>> > > > > context > > > >>> > > > > so any header processing done during the > > > >>> > > > > processing > > > >>> > > > > of the > > > >>> > > > > message > > > >>> > > > > > >>> > > would > > > >>> > > > > > >>> > > > > affect that list, thus affecting all threads > > > >>> > > > > as well > > > >>> > > > > as future > > > >>> > > > > method > > > >>> > > > > calls on > > > >>> > > > > the same thread. Thinking about this, > > > >>> > > > > it may > > > >>> > > > > make sense to > > > >>> > > > > clone > > > >>> > > > > the > > > >>> > > > > list > > > >>> > > > > at the very start of processing messages to > > > >>> > > > > make > > > >>> > > > > sure the header list > > > >>> > > > > > >>> > > in > > > >>> > > > > > >>> > > > > the > > > >>> > > > > request context isn't modified. That might > > > >>> > > > > be > > > >>> > > > > worth filing a > > > >>> > > > > jira > > > >>> > > > > > >>> > > for. > > > >>> > > > > > >>> > > > > For now, I would suggest doing 2 things: > > > >>> > > > > > > > >>> > > > > 1) Use the thread local request contexts: > > > >>> > > > > > > > >>> > > > > <jaxws:client id="xService" > > > >>> > > > > > > > >>> > > > > serviceClass="com.XService" > > > >>> > > > > address="#xServiceUrl" > > > > >>> > > > > > > > >>> > > > > <jaxws:properties> > > > >>> > > > > > > > >>> > > > > <entry > > > >>> > > > > key="thread.local.requ > > > >>> > > > > est.con > > > >>> > > > > text" > > > >>> > > > > value="true" /> > > > >>> > > > > > > > >>> > > > > </jaxws:properties> > > > >>> > > > > > > > >>> > > > > </jaxws:client> > > > >>> > > > > > > > >>> > > > > 2) After returning from any method where you > > > >>> > > > > had set > > > >>> > > > > a header, > > > >>> > > > > call: > > > >>> > > > > context.getMessageContext().remove(Header.HE > > > >>> > > > > ADER_LIS > > > >>> > > > > T); > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > That should keep things in a good state. > > > >>> > > > > > > > >>> > > > > Dan > > > >>> > > > > > > > >>> > > > > On Friday, July 22, 2011 10:25:10 AM Algirdas Veitas wrote: > > > >>> > > > > > Hi, > > > >>> > > > > > > > > >>> > > > > > We are getting a > > > >>> > > > > > ConcurrentModificationException > > > >>> > > > > > exception > > > >>> > > > > > in our > > > >>> > > > > > CXF > > > >>> > > > > > client, when it is processing > > > >>> > > > > > SOAPHeaders. We > > > >>> > > > > > did find > > > >>> > > > > > this > > > >>> > > > > > following link that describes what is > > > >>> > > > > > going on > > > >>> > > > >>> http://cxf.547215.n5.nabble.com/jira-Created-CXF-2762-Cannot > > > >>> -deploy- csta > > > >>> > > > >>> > > > > -web > > > >>> > > > > > > > >>> > > > > > -service-td586662.html#a586663, and we > > > >>> > > > > > will > > > >>> > > > > > address that > > > >>> > > > > > (Header > > > >>> > > > > > object > > > >>> > > > > > needs to be unique across threads), but > > > >>> > > > > > something else > > > >>> > > > > > strange is > > > >>> > > > > > happening: > > > >>> > > > > > > > > >>> > > > > > To start here is our client setup > > > >>> > > > > > > > > >>> > > > > > <!-- Web Service Clients --> > > > >>> > > > > > > > > >>> > > > > > <jaxws:client id="xService" > > > >>> > > > > > > > > >>> > > > > > serviceClass="com.XServi > > > >>> > > > > > ce" > > > >>> > > > > > address="#xServiceUrl" > > > >>> > > > > > /> > > > >>> > > > > > > > > >>> > > > > > This WSDL that is associate with this > > > >>> > > > > > client has > > > >>> > > > > > some > > > >>> > > > > > methods that > > > >>> > > > > > DO > > > >>> > > > > > > > >>> > > > > have a > > > >>> > > > > > > > >>> > > > > > Header and some DO NOT. > > > >>> > > > > > > > > >>> > > > > > And here is the shortened stack trace: > > > >>> > > > > > > > > >>> > > > > > <http://newportave.jira.com/wiki/display > > > >>> > > > > > /21+Jul+ > > > >>> > > > > > 2011+19/11%3 > > > >>> > > > > > A46%2C87 4> > > > >>> > > > > > java.util.ConcurrentModificationExceptio > > > >>> > > > > > n > > > >>> > > > > > at > > > >>> > > > >>> java.util.AbstractList$Itr.checkForComodification(AbstractLi > > > >>> st.java: 372) > > > >>> > > > >>> > > > > > at > > > >>> > > > > > java.util.AbstractList$Itr.next(Abstract > > > >>> > > > > > List.ja > > > >>> > > > > > va:343) > > > >>> > > > > > at > > > >>> > > > >>> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.w > > > >>> riteSoap Enve > > > >>> > > > >>> > > > > lope > > > >>> > > > > > > > >>> > > > > > Start(SoapOutInterceptor.java:139) at > > > >>> > > > >>> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.h > > > >>> andleMes sage > > > >>> > > > >>> > > > > (Soa > > > >>> > > > > > > > >>> > > > > > pOutInterceptor.java:81) at > > > >>> > > > >>> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.h > > > >>> andleMes sage > > > >>> > > > >>> > > > > (Soa > > > >>> > > > > > > > >>> > > > > > pOutInterceptor.java:61) at > > > >>> > > > >>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(Phase > > > >>> Intercep torC > > > >>> > > > >>> > > > > hain > > > >>> > > > > > > > >>> > > > > > .java:255) at > > > >>> > > > > > > > >>> > > > > org.apache.cxf.endpoint.ClientImpl.invoke(Cl > > > >>> > > > > ientImpl > > > >>> > > > > .java:516) > > > >>> > > > > > > > >>> > > > > > Here is the rub: This exception is being > > > >>> > > > > > thrown > > > >>> > > > > > when we are > > > >>> > > > > > calling > > > >>> > > > > > a > > > >>> > > > > > > > >>> > > > > method > > > >>> > > > > > > > >>> > > > > > that DOES NOT have a Header, but on line > > > >>> > > > > > 139 in > > > >>> > > > > > SoapOutInterceptor, > > > >>> > > > > > it > > > >>> > > > > > looks like we are trying to process an > > > >>> > > > > > list that > > > >>> > > > > > has atleast > > > >>> > > > > > 1 > > > >>> > > > > > header. > > > >>> > > > > > > > >>> > > > > Am > > > >>> > > > > > > > >>> > > > > > pretty certain (this is occurring only > > > >>> > > > > > in a > > > >>> > > > > > specific > > > >>> > > > > > environment) > > > >>> > > > > > that > > > >>> > > > > > other methods on this service were made > > > >>> > > > > > previous > > > >>> > > > > > to this > > > >>> > > > > > error that > > > >>> > > > > > did > > > >>> > > > > > include a SOAP Header. Am speculating, > > > >>> > > > > > but is > > > >>> > > > > > the SOAP > > > >>> > > > > > Header being > > > >>> > > > > > > > >>> > > > > cached > > > >>> > > > > > > > >>> > > > > > in the request context and the request > > > >>> > > > > > context > > > >>> > > > > > is scoped per > > > >>> > > > > > client > > > >>> > > > > > instance as per the FAQ ( > > > >>> > > > > > http://cxf.apache.org/faq.html#FAQ-AreJA > > > >>> > > > > > XWSclien > > > >>> > > > > > tproxiesthre > > > >>> > > > > > adsafe%3 F)? > > > >>> > > > > > > > > >>> > > > > > > > > >>> > > > > > Thanks, > > > >>> > > > > > Al > > > >>> > > > > > > > >>> > > > > -- > > > >>> > > > > Daniel Kulp > > > >>> > > > > [email protected] > > > >>> > > > > http://dankulp.com/blog > > > >>> > > > > Talend - http://www.talend.com > > > >>> > > > > > >>> > > -- > > > >>> > > Daniel Kulp > > > >>> > > [email protected] > > > >>> > > http://dankulp.com/blog > > > >>> > > Talend - http://www.talend.com > > > >>> > > > >>> -- > > > >>> Daniel Kulp > > > >>> [email protected] > > > >>> http://dankulp.com/blog > > > >>> Talend - http://www.talend.com > > > > -- > > Daniel Kulp > > [email protected] > > http://dankulp.com/blog > > Talend - http://www.talend.com -- Daniel Kulp [email protected] http://dankulp.com/blog Talend - http://www.talend.com
