You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by jm...@apache.org on 2002/10/29 07:15:08 UTC
cvs commit: xml-axis/java/src/org/apache/axis/ime/internal MessageExchangeCorrelatorService.java MessageExchangeImpl.java NonPersistentMessageExchangeCorrelatorService.java
jmsnell 2002/10/28 22:15:08
Modified: java/src/org/apache/axis/ime MessageContextListener.java
java/src/org/apache/axis/ime/internal
MessageExchangeImpl.java
NonPersistentMessageExchangeCorrelatorService.java
Added: java/src/org/apache/axis/ime/internal/util/handler
HandlerMessageExchange.java
MessageExchangeHandler.java
java/src/org/apache/axis/ime/internal
MessageExchangeCorrelatorService.java
Removed: java/src/org/apache/axis/ime
MessageExchangeCorrelatorService.java
java/src/org/apache/axis/ime/internal/util/handler
HandlerWrapper.java
Log:
A few additional changes. Most significantly, a simple handler that wraps a MessageExchange.sendAndReceive operation
Revision Changes Path
1.2 +0 -8 xml-axis/java/src/org/apache/axis/ime/MessageContextListener.java
Index: MessageContextListener.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/MessageContextListener.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MessageContextListener.java 29 Oct 2002 05:15:29 -0000 1.1
+++ MessageContextListener.java 29 Oct 2002 06:15:08 -0000 1.2
@@ -63,16 +63,8 @@
public abstract class MessageContextListener
implements Serializable {
- public void onFault(
- MessageExchangeCorrelator correlator,
- Throwable exception) {}
-
public void onReceive(
MessageExchangeCorrelator correlator,
MessageContext context) {}
-
- public void onStatus(
- MessageExchangeCorrelator correlator,
- MessageExchangeStatus status) {}
}
1.1 xml-axis/java/src/org/apache/axis/ime/internal/util/handler/HandlerMessageExchange.java
Index: HandlerMessageExchange.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.axis.ime.internal.util.handler;
import org.apache.axis.Handler;
import org.apache.axis.MessageContext;
import org.apache.axis.ime.MessageExchangeCorrelator;
import org.apache.axis.ime.MessageContextListener;
import org.apache.axis.ime.MessageExchangeFaultListener;
import org.apache.axis.ime.internal.MessageExchangeProvider;
import org.apache.axis.ime.internal.MessageExchangeSendContext;
import org.apache.axis.ime.internal.MessageExchangeSendListener;
import org.apache.axis.ime.internal.ReceivedMessageDispatchPolicy;
import org.apache.axis.ime.internal.FirstComeFirstServeDispatchPolicy;
/**
* Used to wrap synchronous handlers (e.g. Axis 1.0 transports)
*
* @author James M Snell (jasnell@us.ibm.com)
*/
public class HandlerMessageExchange
extends MessageExchangeProvider {
private Handler handler;
public HandlerMessageExchange(Handler handler) {
this.handler = handler;
}
/**
* @see org.apache.axis.ime.internal.MessageExchangeProvider1#createSendMessageContextListener()
*/
protected MessageExchangeSendListener getMessageExchangeSendListener() {
return new Listener(handler);
}
protected ReceivedMessageDispatchPolicy getReceivedMessageDispatchPolicy() {
return new FirstComeFirstServeDispatchPolicy(RECEIVE, RECEIVE_REQUESTS);
}
public class Listener
implements MessageExchangeSendListener {
private Handler handler;
public Listener(Handler handler) {
this.handler = handler;
}
/**
* @see org.apache.axis.ime.MessageExchangeContextListener#onMessageExchangeContext(MessageExchangeContext)
*/
public void onSend(
MessageExchangeSendContext context) {
MessageExchangeFaultListener listener =
context.getMessageExchangeFaultListener();
try {
MessageContext msgContext =
context.getMessageContext();
MessageExchangeCorrelator correlator =
context.getMessageExchangeCorrelator();
// should I do init's and cleanup's in here?
handler.invoke(msgContext);
RECEIVE.put(correlator, context);
} catch (Exception exception) {
if (listener != null)
listener.onFault(
context.getMessageExchangeCorrelator(),
exception);
}
}
}
}
1.1 xml-axis/java/src/org/apache/axis/ime/internal/util/handler/MessageExchangeHandler.java
Index: MessageExchangeHandler.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.axis.ime.internal.util.handler;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.ime.MessageExchange;
import org.apache.axis.handlers.BasicHandler;
/**
* This could probably be a bit more sophisticated,
* but it works for now
*
* @author James M Snell (jasnell@us.ibm.com)
*/
public class MessageExchangeHandler
extends BasicHandler {
private MessageExchange messageExchange;
public MessageExchangeHandler() {}
public MessageExchangeHandler(MessageExchange exchange) {
this.messageExchange = exchange;
}
public void invoke(
MessageContext msgContext)
throws AxisFault {
msgContext = messageExchange.sendAndReceive(msgContext);
}
public MessageExchange getMessageExchange() {
return this.messageExchange;
}
public void setMessageExchange(MessageExchange exchange) {
this.messageExchange = exchange;
}
}
1.4 +43 -28 xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeImpl.java
Index: MessageExchangeImpl.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MessageExchangeImpl.java 29 Oct 2002 05:15:29 -0000 1.3
+++ MessageExchangeImpl.java 29 Oct 2002 06:15:08 -0000 1.4
@@ -63,7 +63,6 @@
import org.apache.axis.ime.MessageExchangeFaultListener;
import org.apache.axis.ime.MessageExchangeStatusListener;
import org.apache.axis.ime.MessageExchangeCorrelator;
-import org.apache.axis.ime.MessageExchangeCorrelatorService;
import org.apache.axis.ime.MessageContextListener;
import org.apache.axis.ime.MessageExchangeLifecycle;
import org.apache.axis.ime.internal.util.uuid.UUIDGenFactory;
@@ -74,15 +73,12 @@
public class MessageExchangeImpl
implements MessageExchange, MessageExchangeLifecycle {
- private static final long NO_TIMEOUT = -1;
- public static final long WORKER_COUNT = 5;
- public static final long DEFAULT_TIMEOUT = 1000 * 20;
+ public static final long NO_TIMEOUT = -1;
+ public static final long DEFAULT_TIMEOUT = 1000 * 30;
- private MessageWorkerGroup workers = new MessageWorkerGroup();
private MessageExchangeFaultListener faultListener;
private MessageExchangeStatusListener statusListener;
private MessageExchangeProvider provider;
- private boolean listening = false;
protected Holder holder;
public MessageExchangeImpl(
@@ -95,7 +91,7 @@
public MessageExchangeCorrelator send(
MessageContext context)
throws AxisFault {
- return send(context,null); // should do default listener
+ return send(context,null);
}
/**
@@ -167,6 +163,7 @@
throws AxisFault {
holder = new Holder();
Listener listener = new Listener(holder);
+ setMessageExchangeFaultListener(listener);
try {
this.receive(correlator,listener);
if (timeout != NO_TIMEOUT)
@@ -227,6 +224,7 @@
throws AxisFault {
holder = new Holder();
Listener listener = new Listener(holder);
+ setMessageExchangeFaultListener(listener);
try {
this.send(context,listener);
if (timeout != NO_TIMEOUT)
@@ -245,6 +243,36 @@
return null;
}
+ /**
+ * see org.apache.axis.ime.MessageExchange#setMessageExchangeFaultListener(MessageExchangeFaultListener)
+ */
+ public synchronized void setMessageExchangeFaultListener(
+ MessageExchangeFaultListener listener) {
+ this.faultListener = listener;
+ }
+
+ /**
+ * see org.apache.axis.ime.MessageExchange#getMessageExchangeFaultListener()
+ */
+ public synchronized MessageExchangeFaultListener getMessageExchangeFaultListener() {
+ return this.faultListener;
+ }
+
+ /**
+ * see org.apache.axis.ime.MessageExchange#setMessageExchangeStatusListener(MessageExchangeStatusListener)
+ */
+ public synchronized void setMessageExchangeStatusListener(
+ MessageExchangeStatusListener listener) {
+ this.statusListener = listener;
+ }
+
+ /**
+ * see org.apache.axis.ime.MessageExchange#getMessageExchangeStatusListener()
+ */
+ public synchronized MessageExchangeStatusListener getMessageExchangeStatusListener() {
+ return this.statusListener;
+ }
+
// -- Utility Classes --- //
@@ -252,12 +280,14 @@
private MessageExchangeCorrelator correlator;
private MessageContext context;
private Throwable exception;
+ private boolean done = false;
public synchronized void set(
MessageExchangeCorrelator correlator,
MessageContext context) {
this.correlator = correlator;
this.context = context;
+ done = true;
notifyAll();
}
@@ -266,25 +296,27 @@
Throwable throwable) {
this.correlator = correlator;
this.exception = throwable;
+ done = true;
notifyAll();
}
public synchronized void waitForNotify()
throws InterruptedException {
- wait();
+ if (!done) wait();
return;
}
public synchronized void waitForNotify(long timeout)
throws InterruptedException {
- wait(timeout);
+ if (!done) wait(timeout);
return;
}
}
- public class Listener
- extends MessageContextListener {
+ public class Listener
+ extends MessageContextListener
+ implements MessageExchangeFaultListener {
protected Holder holder;
@@ -353,21 +385,4 @@
provider.shutdown(force);
}
- public synchronized void setMessageExchangeFaultListener(
- MessageExchangeFaultListener listener) {
- this.faultListener = listener;
- }
-
- public synchronized MessageExchangeFaultListener getMessageExchangeFaultListener() {
- return this.faultListener;
- }
-
- public synchronized void setMessageExchangeStatusListener(
- MessageExchangeStatusListener listener) {
- this.statusListener = listener;
- }
-
- public synchronized MessageExchangeStatusListener getMessageExchangeStatusListener() {
- return this.statusListener;
- }
}
1.4 +0 -1 xml-axis/java/src/org/apache/axis/ime/internal/NonPersistentMessageExchangeCorrelatorService.java
Index: NonPersistentMessageExchangeCorrelatorService.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/NonPersistentMessageExchangeCorrelatorService.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- NonPersistentMessageExchangeCorrelatorService.java 29 Oct 2002 05:15:29 -0000 1.3
+++ NonPersistentMessageExchangeCorrelatorService.java 29 Oct 2002 06:15:08 -0000 1.4
@@ -56,7 +56,6 @@
package org.apache.axis.ime.internal;
import org.apache.axis.ime.MessageExchangeCorrelator;
-import org.apache.axis.ime.MessageExchangeCorrelatorService;
import java.util.Hashtable;
1.1 xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeCorrelatorService.java
Index: MessageExchangeCorrelatorService.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.axis.ime.internal;
import org.apache.axis.ime.MessageExchangeCorrelator;
/**
* @author James M Snell (jasnell@us.ibm.com)
*/
public interface MessageExchangeCorrelatorService {
public void put(
MessageExchangeCorrelator correlator,
Object context);
public Object get(
MessageExchangeCorrelator correlator);
}