KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > axis2 > clientapi > TwoChannelBasedSender


1 /*
2  * Copyright 2004,2005 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.axis2.clientapi;
17
18 import org.apache.axis2.context.MessageContext;
19 import org.apache.axis2.description.TransportInDescription;
20 import org.apache.axis2.engine.AxisEngine;
21 import org.apache.axis2.engine.AxisFault;
22 import org.apache.axis2.soap.SOAPEnvelope;
23 import org.apache.axis2.transport.TransportUtils;
24
25
26 public class TwoChannelBasedSender {
27     public static MessageContext send(MessageContext msgctx,TransportInDescription transportIn) throws AxisFault{
28        
29         AxisEngine engine = new AxisEngine(msgctx.getSystemContext());
30        
31
32         engine.send(msgctx);
33
34         MessageContext response =
35             new MessageContext(msgctx.getSystemContext(),
36                 msgctx.getSessionContext(),
37                 msgctx.getTransportIn(),
38                 msgctx.getTransportOut());
39         response.setProperty(
40             MessageContext.TRANSPORT_IN,
41             msgctx.getProperty(MessageContext.TRANSPORT_IN));
42         response.setServerSide(false);
43         response.setOperationContext(msgctx.getOperationContext());
44         response.setServiceContext(msgctx.getServiceContext());
45         
46         //If request is REST we assume the response is REST, so set the variable
47
response.setDoingREST(msgctx.isDoingREST());
48         
49         SOAPEnvelope resenvelope = TransportUtils.createSOAPMessage(response);
50
51         if (resenvelope != null) {
52             response.setEnvelope(resenvelope);
53             engine = new AxisEngine(msgctx.getSystemContext());
54             engine.receive(response);
55
56         } else {
57             throw new AxisFault("Blocking invocation always expect a response");
58         }
59         return response;
60     }
61 }
62
Popular Tags