KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > axis2 > receivers > AbstractInOutAsyncMessageReceiver


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.receivers;
17
18 import org.apache.axis2.context.MessageContext;
19 import org.apache.axis2.engine.AxisEngine;
20 import org.apache.axis2.engine.AxisFault;
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23
24 /**
25  * This is takes care of the IN-OUT sync MEP in the server side
26  */

27 public abstract class AbstractInOutAsyncMessageReceiver
28     extends AbstractMessageReceiver {
29         protected Log log = LogFactory.getLog(getClass());
30     public abstract void invokeBusinessLogic(MessageContext inMessage,ServerCallback callback)
31         throws AxisFault;
32
33     public final void recieve(final MessageContext messgeCtx) throws AxisFault {
34         final ServerCallback callback = new ServerCallback() {
35             public void handleResult(MessageContext result)throws AxisFault {
36                 AxisEngine engine =
37                     new AxisEngine(messgeCtx.getOperationContext().getServiceContext().getEngineContext());
38                 engine.send(messgeCtx);
39             }
40             public void handleFault(AxisFault fault)throws AxisFault{
41                 AxisEngine engine = new AxisEngine(messgeCtx.getOperationContext().getServiceContext().getEngineContext());
42                 engine.handleFault(messgeCtx,fault);
43             }
44         };
45         Runnable JavaDoc theadedTask = new Runnable JavaDoc() {
46             public void run() {
47                 try {
48                     invokeBusinessLogic(messgeCtx,callback);
49                 } catch (AxisFault e) {
50                     log.error(e);
51                 }
52             }
53         };
54         (new Thread JavaDoc(theadedTask)).start();
55     }
56
57 }
58
Popular Tags