You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2007/08/30 11:34:21 UTC
svn commit: r571093 - in /incubator/servicemix/trunk/deployables:
bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/
serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/
Author: ffang
Date: Thu Aug 30 02:34:21 2007
New Revision: 571093
URL: http://svn.apache.org/viewvc?rev=571093&view=rev
Log:
[SM-939]fix cocurrent request ocassionally failed problem in CXF SE&BC
Modified:
incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBCSESystemTest.java
incubator/servicemix/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java
Modified: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBCSESystemTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBCSESystemTest.java?rev=571093&r1=571092&r2=571093&view=diff
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBCSESystemTest.java (original)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBCSESystemTest.java Thu Aug 30 02:34:21 2007
@@ -46,6 +46,43 @@
"Negative number cant be added!");
}
}
+
+ public void testMultiClient() throws Exception {
+ URL wsdl = getClass().getResource("/wsdl/calculator.wsdl");
+ assertNotNull(wsdl);
+ CalculatorService service = new CalculatorService(wsdl, new QName(
+ "http://apache.org/cxf/calculator", "CalculatorService"));
+ CalculatorPortType port = service.getCalculatorPort();
+ MultiClientThread[] clients = new MultiClientThread[10];
+ for (int i = 0; i < clients.length; i++) {
+ clients[i] = new MultiClientThread(port);
+ }
+
+ for (int i = 0; i < clients.length; i++) {
+ clients[i].start();
+ }
+
+ for (int i = 0; i < clients.length; i++) {
+ clients[i].join();
+ }
+ }
+
+ class MultiClientThread extends Thread {
+ private CalculatorPortType port;
+
+ public MultiClientThread(CalculatorPortType port) {
+ this.port = port;
+ }
+
+ public void run() {
+ try {
+ assertEquals(port.add(1, 2), 3);
+ } catch (AddNumbersFault e) {
+ // TODO Auto-generated catch block
+ fail();
+ }
+ }
+ }
@Override
protected AbstractXmlApplicationContext createBeanFactory() {
Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java?rev=571093&r1=571092&r2=571093&view=diff
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java Thu Aug 30 02:34:21 2007
@@ -64,7 +64,6 @@
private String address;
-
private List<Interceptor> in = new CopyOnWriteArrayList<Interceptor>();
private List<Interceptor> out = new CopyOnWriteArrayList<Interceptor>();
@@ -155,21 +154,17 @@
*/
@Override
public void process(MessageExchange exchange) throws Exception {
- JBITransportFactory jbiTransportFactory =
- (JBITransportFactory)getBus().getExtension(ConduitInitiatorManager.class).
- getConduitInitiator(CxfSeComponent.JBI_TRANSPORT_ID);
- JBIDestination jbiDestination = jbiTransportFactory.getDestination(exchange.getService().toString()
- + exchange.getInterfaceName().toString());
- DeliveryChannel oldDc = jbiDestination.getDeliveryChannel();
- try {
- jbiDestination.setDeliveryChannel(getContext()
- .getDeliveryChannel());
-
- if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
- jbiDestination.getJBIDispatcherUtil().dispatch(exchange);
- }
- } finally {
- jbiDestination.setDeliveryChannel(oldDc);
+ JBITransportFactory jbiTransportFactory = (JBITransportFactory) getBus()
+ .getExtension(ConduitInitiatorManager.class)
+ .getConduitInitiator(CxfSeComponent.JBI_TRANSPORT_ID);
+ JBIDestination jbiDestination = jbiTransportFactory
+ .getDestination(exchange.getService().toString()
+ + exchange.getInterfaceName().toString());
+ DeliveryChannel dc = getContext().getDeliveryChannel();
+
+ jbiDestination.setDeliveryChannel(dc);
+ if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
+ jbiDestination.getJBIDispatcherUtil().dispatch(exchange);
}
}
@@ -183,14 +178,13 @@
super.start();
address = "jbi://" + ID_GENERATOR.generateSanitizedId();
endpoint.publish(address);
- setService(endpoint.getServer().getEndpoint().getService()
- .getName());
- setEndpoint(endpoint.getServer().getEndpoint()
- .getEndpointInfo().getName().getLocalPart());
+ setService(endpoint.getServer().getEndpoint().getService().getName());
+ setEndpoint(endpoint.getServer().getEndpoint().getEndpointInfo()
+ .getName().getLocalPart());
try {
- definition = new ServiceWSDLBuilder(getBus(), endpoint
- .getServer().getEndpoint().getService()
- .getServiceInfos().iterator().next()).build();
+ definition = new ServiceWSDLBuilder(getBus(), endpoint.getServer()
+ .getEndpoint().getService().getServiceInfos().iterator()
+ .next()).build();
} catch (WSDLException e) {
throw new DeploymentException(e);
}