use of org.apache.cxf.transport.jms.JMSMessageHeadersType in project cxf by apache.
the class GreeterImplQueueDecoupledOneWays method sendReply.
protected void sendReply() {
JMSMessageHeadersType headers = (JMSMessageHeadersType) context.getMessageContext().get(JMSConstants.JMS_SERVER_REQUEST_HEADERS);
if (headers == null || headers.getJMSReplyTo() == null) {
synchronized (this) {
if (!specCompliant) {
asyncEx = new Exception("ReplyTo header in the server Request context was null");
}
notifyAll();
}
return;
} else if (headers != null && headers.getJMSReplyTo() != null && specCompliant) {
synchronized (this) {
asyncEx = new Exception("ReplyTo header in the server Request context was not null");
notifyAll();
}
return;
}
QName serviceName = new QName("http://cxf.apache.org/hello_world_jms", "HelloWorldQueueDecoupledOneWaysService");
QName portName = new QName("http://cxf.apache.org/hello_world_jms", "HelloWorldQueueDecoupledOneWaysReplyPort");
Throwable e = null;
try {
URL wsdl = getClass().getResource("/wsdl/jms_test.wsdl");
HelloWorldQueueDecoupledOneWaysService service = new HelloWorldQueueDecoupledOneWaysService(wsdl, serviceName);
HelloWorldOneWayPort greeter = service.getPort(portName, HelloWorldOneWayPort.class);
reply = "Re:" + request;
greeter.greetMeOneWay(reply);
} catch (Throwable t) {
e = t;
}
synchronized (this) {
asyncEx = e;
notifyAll();
}
}
use of org.apache.cxf.transport.jms.JMSMessageHeadersType in project cxf by apache.
the class JMSClientServerTest method testQueueDecoupledOneWaysConnection.
@Test
public void testQueueDecoupledOneWaysConnection() throws Exception {
QName serviceName = new QName("http://cxf.apache.org/hello_world_jms", "HelloWorldQueueDecoupledOneWaysService");
QName portName = new QName("http://cxf.apache.org/hello_world_jms", "HelloWorldQueueDecoupledOneWaysPort");
URL wsdl = getWSDLURL("/wsdl/jms_test.wsdl");
String wsdl2 = "testutils/jms_test.wsdl".intern();
wsdlStrings.add(wsdl2);
broker.updateWsdl(getBus(), wsdl2);
HelloWorldQueueDecoupledOneWaysService service = new HelloWorldQueueDecoupledOneWaysService(wsdl, serviceName);
Endpoint requestEndpoint = null;
Endpoint replyEndpoint = null;
HelloWorldOneWayPort greeter = service.getPort(portName, HelloWorldOneWayPort.class);
try {
GreeterImplQueueDecoupledOneWays requestServant = new GreeterImplQueueDecoupledOneWays();
requestEndpoint = Endpoint.publish(null, requestServant, new LoggingFeature());
GreeterImplQueueDecoupledOneWaysDeferredReply replyServant = new GreeterImplQueueDecoupledOneWaysDeferredReply();
replyEndpoint = Endpoint.publish(null, replyServant, new LoggingFeature());
BindingProvider bp = (BindingProvider) greeter;
Map<String, Object> requestContext = bp.getRequestContext();
JMSMessageHeadersType requestHeader = new JMSMessageHeadersType();
requestHeader.setJMSReplyTo("dynamicQueues/test.jmstransport.oneway.with.set.replyto.reply");
requestContext.put(JMSConstants.JMS_CLIENT_REQUEST_HEADERS, requestHeader);
String expectedRequest = "JMS:Queue:Request";
greeter.greetMeOneWay(expectedRequest);
String request = requestServant.ackRequestReceived(5000);
if (request == null) {
if (requestServant.getException() != null) {
fail(requestServant.getException().getMessage());
} else {
fail("The oneway call didn't reach its intended endpoint");
}
}
assertEquals(expectedRequest, request);
requestServant.proceedWithReply();
String expectedReply = requestServant.ackReplySent(5000);
if (expectedReply == null) {
if (requestServant.getException() != null) {
fail(requestServant.getException().getMessage());
} else {
fail("The decoupled one-way reply was not sent");
}
}
String reply = replyServant.ackRequest(5000);
if (reply == null) {
if (replyServant.getException() != null) {
fail(replyServant.getException().getMessage());
} else {
fail("The decoupled one-way reply didn't reach its intended endpoint");
}
}
assertEquals(expectedReply, reply);
} catch (Exception ex) {
throw ex;
} finally {
if (requestEndpoint != null) {
requestEndpoint.stop();
}
if (replyEndpoint != null) {
replyEndpoint.stop();
}
((java.io.Closeable) greeter).close();
}
}
use of org.apache.cxf.transport.jms.JMSMessageHeadersType in project cxf by apache.
the class JMSClientServerTest method testQueueOneWaySpecCompliantConnection.
@Test
public void testQueueOneWaySpecCompliantConnection() throws Throwable {
QName serviceName = new QName("http://cxf.apache.org/hello_world_jms", "HelloWorldQueueDecoupledOneWaysService");
QName portName = new QName("http://cxf.apache.org/hello_world_jms", "HelloWorldQueueDecoupledOneWaysPort");
URL wsdl = getWSDLURL("/wsdl/jms_test.wsdl");
assertNotNull(wsdl);
String wsdlString2 = "testutils/jms_test.wsdl";
wsdlStrings.add(wsdlString2);
broker.updateWsdl(getBus(), wsdlString2);
HelloWorldQueueDecoupledOneWaysService service = new HelloWorldQueueDecoupledOneWaysService(wsdl, serviceName);
assertNotNull(service);
Endpoint requestEndpoint = null;
HelloWorldOneWayPort greeter = service.getPort(portName, HelloWorldOneWayPort.class);
try {
GreeterImplQueueDecoupledOneWays requestServant = new GreeterImplQueueDecoupledOneWays(true);
requestEndpoint = Endpoint.publish(null, requestServant);
BindingProvider bp = (BindingProvider) greeter;
Map<String, Object> requestContext = bp.getRequestContext();
JMSMessageHeadersType requestHeader = new JMSMessageHeadersType();
requestHeader.setJMSReplyTo("dynamicQueues/test.jmstransport.oneway.with.set.replyto.reply");
requestContext.put(JMSConstants.JMS_CLIENT_REQUEST_HEADERS, requestHeader);
String expectedRequest = "JMS:Queue:Request";
greeter.greetMeOneWay(expectedRequest);
String request = requestServant.ackRequestReceived(5000);
if (request == null) {
if (requestServant.getException() != null) {
fail(requestServant.getException().getMessage());
} else {
fail("The oneway call didn't reach its intended endpoint");
}
}
assertEquals(expectedRequest, request);
requestServant.proceedWithReply();
boolean ack = requestServant.ackNoReplySent(5000);
if (!ack) {
if (requestServant.getException() != null) {
Throwable ex = requestServant.getException();
if (ex.getMessage().contains("Request context was not null")) {
return;
}
throw requestServant.getException();
}
fail("The decoupled one-way reply was sent");
}
} catch (Exception ex) {
throw ex;
} finally {
if (requestEndpoint != null) {
requestEndpoint.stop();
}
((java.io.Closeable) greeter).close();
}
}
use of org.apache.cxf.transport.jms.JMSMessageHeadersType in project cxf by apache.
the class TwoWayJMSImplBase method addToReply.
private void addToReply(String key, String value) {
MessageContext mc = wsContext.getMessageContext();
JMSMessageHeadersType responseHeaders = (JMSMessageHeadersType) mc.get(JMSConstants.JMS_SERVER_RESPONSE_HEADERS);
responseHeaders.putProperty(key, value);
}
use of org.apache.cxf.transport.jms.JMSMessageHeadersType in project cxf by apache.
the class SOAPJMSTestSuiteTest method oneWayTest.
private void oneWayTest(TestCaseType testcase, JMSSimplePortType port) throws Exception {
closeable = (java.io.Closeable) port;
InvocationHandler handler = Proxy.getInvocationHandler(port);
BindingProvider bp = (BindingProvider) handler;
Map<String, Object> requestContext = bp.getRequestContext();
JMSMessageHeadersType requestHeader = new JMSMessageHeadersType();
requestContext.put(JMSConstants.JMS_CLIENT_REQUEST_HEADERS, requestHeader);
Exception e = null;
try {
port.ping("test");
} catch (Exception e1) {
e = e1;
}
checkJMSProperties(testcase, requestHeader);
if (e != null) {
throw e;
}
}
Aggregations