Hi, I was wondering if you can try running your scenario with jetty instead of tomcat and see if this also leads to the same problem. The reason why I am asking this is that I have seen some buffering issue with tomcat in the past.
thanks. regards, aki 2011/11/30 Daniel Eriksson <[email protected]>: > Hi, > > I'm new to CXF and have what appears to be a concurrency issue using a CXF > web service in a web application. When load testing the application using > JMeter I sometimes end up getting incomplete results returned from the cxf > framework (i.e. objects with uninstantiated/null variables). Even though I > can verify using a LoggingInInterceptor on the client, that the web service > always returns the correct result. > > I've included example code that reproduces the problem. > > The client is created and calls a service from within in a struts2 action: > > *JaxWsProxyFactoryBean proxyFactoryBean = new JaxWsProxyFactoryBean(); > proxyFactoryBean.setServiceClass(MyTestService.class); > String serviceURL = "http://" + request.getServerName() + ":" + > request.getServerPort() + SERVICE_NAME; > proxyFactoryBean.setAddress(serviceURL); > serviceProxy = (MyTestService) proxyFactoryBean.create(); > PojoMap pojoMap = serviceProxy.getPojoList(someString0, someString1);* > > //occasionally under load pojoMap.getPojoMap() will return null > > Service interface: > > @WebService > public interface MyTestService { > public PojoMap getPojoList( > @WebParam(name = "arg0") String arg0, > @WebParam(name = "arg1") String arg1) throws Exception; > } > > Service implementation: > @WebService(name = "MyTestServicePreLoaded", serviceName = > "MyTestServiceName") > public class MyTestServiceImpl implements MyTestService { > public MyTestServiceImpl() { > super(); > } > @Override > public PojoMap getPojoList(String arg0, String arg1) throws Exception { > PojoMap pojoMap = performWork(arg0, arg1); > return pojoMap; > } > > private PojoMap performWork(String arg0, String arg1) { > Map<String, PojoMapList> pml = new HashMap<String, PojoMapList>(); > PojoMapList pojoMapList = new PojoMapList(); > List<String> list = new ArrayList<String>(); > list.add(arg1); > pojoMapList.setPojoMapList(list); > pml.put(arg0, pojoMapList); > PojoMap pojoMap = PojoMapFactory.createPojoMap(pml); > return pojoMap; > } > } > > The objects being returned from the service: > @XmlRootElement > @XmlAccessorType(XmlAccessType.FIELD) > public class PojoMap { > private Map<String, PojoMapList> pojoMap; > public Map<String, PojoMapList> getPojoMap() { > return pojoMap; > > } > public void setPojoMap(Map<String, PojoMapList> pojoMap) { > this.pojoMap = pojoMap; > } > } > > @XmlRootElement > @XmlAccessorType(XmlAccessType.FIELD) > public class PojoMapList { > > private List<String> pojoMapList; > public List<String> getPojoMapList() { > return pojoMapList; > } > public void setPojoMapList(List<String> pojoMapList) { > this.pojoMapList = pojoMapList; > } > } > > For testing purposes both client and service are deployed in the same > tomcat instance (tomcat 6). I'm using the latest (2.5.0) CXF release. Using > the same created JaxWsProxyFactoryBean as a singleton for all web service > calls makes no difference. > > Any suggestions on what the problem might be or how to further debug the > problem? > > Regards > > Daniel
