You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-user@ws.apache.org by Gregory Prokter <pr...@comcast.net> on 2004/12/31 01:31:01 UTC

RE: Async invocation in WSIF and multiple Provider support in a single client

Much oblidged, Jeff.  I was thinking to implement something like that, so if
it works this way great!
I'm still researching and would love to hear on the subject from Alek or Ant
or the other authors.  I recall seeing suggestion like this (2 Queues: for
In and Out) in one of the 2001/2002 presentations by the IBM WSIF folks re.
async support in WSIF.

I've got another question and would appreciate an answer:

Can a single client use multiple Providers to multiple Services?  For ex. A
client calls WSDL1 over SOAP/HTTP and WSDL2 over JMS and WSDL3 over Java.  I
don't see why not, since the binding in in WSDL, but haven't run any
examples with this case and would like to hear howto's and any gotchas in
doing this.

Best to all,

Greg

-----Original Message-----
From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
Sent: Wednesday, December 29, 2004 5:56 PM
To: wsif-user@ws.apache.org
Subject: Re: Async invocation in WSIF


I'm not sure JMS transport is required for the invoked web service endpoint.
I think there is a test example which uses the JMS queue as the destination
for the response, including persistence if the client happens to be shut
down when the response arrives, but uses a JMS <-> HTTP bridge to invoke the
"ordinary" web service endpoint synchronously.

Jeff

----- Original Message -----
From: "Gregory Prokter" <pr...@comcast.net>
To: <ws...@ws.apache.org>
Sent: Wednesday, December 29, 2004 4:08 PM
Subject: RE: Async invocation in WSIF


> Jeff-
>
> The answer to your Q is YES.
>
> Ok, after studying the WSIF code, it appears that the transport indeed has
> to be JMS in order for WSIFPort_ApacheAxis.supportsAsync() which is called
> by WSIFOperation_ApacheAxis.executeRequestResponseAsync()  to return TRUE.
> Otherwise, it return FALSE and
> WSIFOperation_ApacheAxis.executeRequestResponseAsync() throws
WSIFException
> ("asynchronous operations not available"); as indeed happened in my case.
>
> This is very disappointing since not ever Web Service supports JMS, but
all
> support HTTP.
>
> -----Original Message-----
> From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
> Sent: Wednesday, December 29, 2004 12:40 PM
> To: wsif-user@ws.apache.org
> Subject: Re: Async invocation in WSIF
>
>
> Did you look at tests/async in the wsif tree?
> Jeff
> ----- Original Message -----
> From: "Gregory Prokter" <pr...@comcast.net>
> To: <ws...@ws.apache.org>
> Sent: Wednesday, December 29, 2004 11:54 AM
> Subject: RE: Async invocation in WSIF
>
>
> > Thanks Jeff.
> >
> > Using an asynch transport, like a JMS provider or SOAP Provider on top
of
> > JMS is a possible approach to async invocation, but IMO it's rather a
far
> > leass advantageous approach than having async invocation in the WSIF
> itself,
> > regardless of the synch trasport protocol, like HTTP you're running on
top
> > of.  See an excellent ref on the subject:
> > http://www.voelter.de/data/articles/ijwr04.pdf.  I thought and hoped
that
> > WSIF.executeRequestResponseAsync() is just that, an async invocation in
> > WSIF, and in my view if it doesn't work it will undermine considerably
the
> > value of WSIF.
> >
> > Greg
> >
> > -----Original Message-----
> > From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
> > Sent: Wednesday, December 29, 2004 11:33 AM
> > To: wsif-user@ws.apache.org
> > Subject: Re: Async invocation in WSIF
> >
> >
> > This answer is not definitive, but may be helpful nonetheless.  I
believe,
> > but am not certain, that you need to have a JMS implementation backing
> > asynchronous calls in WSIF.  This means you need to build Axis with a
JMS
> > implementation (such as OpenJMS)  in the class path and similarly make
> that
> > implementation available in your classpath when WSIF is used.  In
earlier
> > incarnations of WSIF, there was some documentation of what was
necessary,
> > but I have not looked recently to see if it's still there.
> >
> > Jeff
> > ----- Original Message -----
> > From: "Gregory Prokter" <pr...@comcast.net>
> > To: <ws...@ws.apache.org>
> > Cc: <gr...@yahoo.com>
> > Sent: Wednesday, December 29, 2004 9:14 AM
> > Subject: Async invocation in WSIF
> >
> >
> > > Hello WSIF experts!
> > >
> > > Happy New 2005 Year to all!
> > >
> > > Recently, I discovered WSIF and it looks awesome!  Have run some
> examples
> > > with it.  Not everything works smoothly and I will have to dive into
the
> > > code myself, which I will do very reluctantly, since I'd rather
> > concentrate
> > > on my project rather than WSIF code, but this is the nature of the
open
> > > code.
> > >
> > > Now to my question.  When I ran an example involving asynch
invocation,
> > i.e.
> > >
> > > ok  = operation.executeRequestResponseAsync(input, responseHandler);
> > > /* there is a definition of: public class AsyncResponseHandler
> implements
> > > WSIFResponseHandler  {} */
> > >
> > > I got this cute Exception:
> > >
> > > org.apache.wsif.WSIFException: asynchronous operations not available
> > >      [java] at
> > >
> >
>
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeRe
> > > questResponseAsync(Unknown Source)
> > >      [java] at
> > >
> >
>
com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker.
> > > java:291)
> > >      [java] at
> > >
> >
>
com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:105
> > > )
> > >      [java] Exception in thread "main"
> > >      [java] Java Result: 1
> > >
> > > So, is WSIFOperation.executeRequestResponseAsync() avail or not?  What
> > > versions support it?  I got the lattest stable (downloaded around mid
> > > December 04).
> > >
> > > Need you help ASAP!
> > >
> > > Thanks a lot in advance,
> > >
> > > Greg
> > >
> >
>


Deprecated methods in WSIFPort_ApacheAxis - why?

Posted by Gregory Prokter <pr...@comcast.net>.
To Alek and Ant and any other contributors:

Can anyone please tell me why all the setters were deprecated in the
WSIFPort_ApacheAxis class in wsif-2.0.1?  I use setEndPoint() to redirect
the SOAP traffic to my tcpmon listening port and was suprised to find out
that it's deprecated in 2.0.1.  Is there a better/recommended way to hookup
tcpmon?  The issue is that after WSDL is obtained, all the traffic goes to
the service's port and not tcpmon's port and
WSIFPort_ApacheAxis.setEndPoint(0 did it for me, otherwise I see in tcpmon
only the first GET to grab the WSDL file.

Thansk a lot,

Greg

-----Original Message-----
From: Gregory Prokter [mailto:prokter@comcast.net]
Sent: Saturday, January 01, 2005 8:45 PM
To: wsif-user@ws.apache.org
Subject: RE: Exception in WSIFOperation_ApacheAxis.setResponseContext()


Thanks Alek.  I think I found the problem.  I'm running the lib-s from wsif
2.0.1, but my DynamicInvoker is from wsif 2.0.  So, when I tried the 2.0.1's
samples/clients/DynamicInvoker on my wsdl, everything worked just fine.
Turns out that 2.0 DynamicInvoker had some deprecated methods, like:
WSIFUtils.getWrappedDocLiteralPart(parts, operationName) and
WSIFUtils.unWrapPart(p, def).

So, it looks to me that not only the .jar files have to be in sync, but also
the samples, like DynamicInvoker have to be in sync with the .jar file
version.

Thanks, for the willingness to help.  I'm still playing around with the wsif
technology, as I've just discovered it.

Best wishes for the New 2005!

Greg

-----Original Message-----
From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
Sent: Saturday, January 01, 2005 4:21 AM
To: wsif-user@ws.apache.org
Subject: Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()


Gregory Prokter wrote:

>I've rerun CVS-checkout to get the lattest wsif-2.0.1_IB3 which in its /lib
>dir has both: axis-1_2RC2.jar and saaj.jar. I assume these are compatible
>since they both came from the same wsif version in apache cvs.  So far no
>luck.  The same Exception is thrown.
>
>
interesting - how can I reproduce it?

what is exactly your CLASSPATH? what is WSDL file and what are command
line parameters you pass to DynamicInvoker?

thanks,

alek

>
>-----Original Message-----
>From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
>Sent: Friday, December 31, 2004 5:36 PM
>To: wsif-user@ws.apache.org
>Subject: Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()
>
>
>i would check that you have right version of saaj.jar that works with
>axis.jar.
>
>HTH,
>
>alek
>
>Gregory Prokter wrote:
>
>
>
>>Greetings to all,
>>
>>I need help.  I've got the Exception below while doing
>>executeRequestResponseOperation with Provider=ApacheAxis.  I'm running a
>>Requestor very similar to the samples/DynamicInvoker. The Requestor
>>successfully received the WSDL (GET) and successfully sent in the
operation
>>request (POST).  Then, the operation was successfully executed and the
SOAP
>>message with the right return value sent back to the Requestor - yes, I've
>>been watching TCPMON.  However, because of the exception below, the
>>Requestor code couldn't pass the executeRequestResponseOperation().  Then,
>>
>>
>I
>
>
>>rebuilt the wsif.jar with the lattest sources of wsif-2.0, thinking that
>>
>>
>the
>
>
>>java.lang.NoSuchMethodError Exception indicates I must've gotten something
>>out of synch, rebuilt my example with the new wsif.jar and ran the
>>
>>
>Requestor
>
>
>>again, but the same Exception was trown again.  I wonder why.  Anyone has
a
>>clue?
>>
>>Thanks in advance for your help.
>>
>>Greg
>>
>>Exception:
>>==========
>>	[java] java.lang.NoSuchMethodError:
>>org.apache.axis.Message.getSOAPEnvelope()Lorg/apache/axis/message/SOAPEnve
l
>>
>>
>o
>
>
>>pe;
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.setResp
o
>>
>>
>n
>
>
>>seContext(Unknown Source)
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.invokeR
e
>>
>>
>q
>
>
>>uestResponseOperation(Unknown Source)
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.execute
R
>>
>>
>e
>
>
>>questResponseOperation(Unknown Source)
>>    [java] at
>>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoke
r
>>
>>
>.
>
>
>>java:295)
>>    [java] at
>>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:1
0
>>
>>
>7
>
>
>>)
>>    [java] Exception in thread "main"
>>
>>
>>
>>
>>
>
>
>--
>The best way to predict the future is to invent it - Alan Kay
>
>
>


--
The best way to predict the future is to invent it - Alan Kay


RE: Exception in WSIFOperation_ApacheAxis.setResponseContext()

Posted by Gregory Prokter <pr...@comcast.net>.
Thanks Alek.  I think I found the problem.  I'm running the lib-s from wsif
2.0.1, but my DynamicInvoker is from wsif 2.0.  So, when I tried the 2.0.1's
samples/clients/DynamicInvoker on my wsdl, everything worked just fine.
Turns out that 2.0 DynamicInvoker had some deprecated methods, like:
WSIFUtils.getWrappedDocLiteralPart(parts, operationName) and
WSIFUtils.unWrapPart(p, def).

So, it looks to me that not only the .jar files have to be in sync, but also
the samples, like DynamicInvoker have to be in sync with the .jar file
version.

Thanks, for the willingness to help.  I'm still playing around with the wsif
technology, as I've just discovered it.

Best wishes for the New 2005!

Greg

-----Original Message-----
From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
Sent: Saturday, January 01, 2005 4:21 AM
To: wsif-user@ws.apache.org
Subject: Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()


Gregory Prokter wrote:

>I've rerun CVS-checkout to get the lattest wsif-2.0.1_IB3 which in its /lib
>dir has both: axis-1_2RC2.jar and saaj.jar. I assume these are compatible
>since they both came from the same wsif version in apache cvs.  So far no
>luck.  The same Exception is thrown.
>
>
interesting - how can I reproduce it?

what is exactly your CLASSPATH? what is WSDL file and what are command
line parameters you pass to DynamicInvoker?

thanks,

alek

>
>-----Original Message-----
>From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
>Sent: Friday, December 31, 2004 5:36 PM
>To: wsif-user@ws.apache.org
>Subject: Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()
>
>
>i would check that you have right version of saaj.jar that works with
>axis.jar.
>
>HTH,
>
>alek
>
>Gregory Prokter wrote:
>
>
>
>>Greetings to all,
>>
>>I need help.  I've got the Exception below while doing
>>executeRequestResponseOperation with Provider=ApacheAxis.  I'm running a
>>Requestor very similar to the samples/DynamicInvoker. The Requestor
>>successfully received the WSDL (GET) and successfully sent in the
operation
>>request (POST).  Then, the operation was successfully executed and the
SOAP
>>message with the right return value sent back to the Requestor - yes, I've
>>been watching TCPMON.  However, because of the exception below, the
>>Requestor code couldn't pass the executeRequestResponseOperation().  Then,
>>
>>
>I
>
>
>>rebuilt the wsif.jar with the lattest sources of wsif-2.0, thinking that
>>
>>
>the
>
>
>>java.lang.NoSuchMethodError Exception indicates I must've gotten something
>>out of synch, rebuilt my example with the new wsif.jar and ran the
>>
>>
>Requestor
>
>
>>again, but the same Exception was trown again.  I wonder why.  Anyone has
a
>>clue?
>>
>>Thanks in advance for your help.
>>
>>Greg
>>
>>Exception:
>>==========
>>	[java] java.lang.NoSuchMethodError:
>>org.apache.axis.Message.getSOAPEnvelope()Lorg/apache/axis/message/SOAPEnve
l
>>
>>
>o
>
>
>>pe;
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.setResp
o
>>
>>
>n
>
>
>>seContext(Unknown Source)
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.invokeR
e
>>
>>
>q
>
>
>>uestResponseOperation(Unknown Source)
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.execute
R
>>
>>
>e
>
>
>>questResponseOperation(Unknown Source)
>>    [java] at
>>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoke
r
>>
>>
>.
>
>
>>java:295)
>>    [java] at
>>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:1
0
>>
>>
>7
>
>
>>)
>>    [java] Exception in thread "main"
>>
>>
>>
>>
>>
>
>
>--
>The best way to predict the future is to invent it - Alan Kay
>
>
>


--
The best way to predict the future is to invent it - Alan Kay


Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
Gregory Prokter wrote:

>I've rerun CVS-checkout to get the lattest wsif-2.0.1_IB3 which in its /lib
>dir has both: axis-1_2RC2.jar and saaj.jar. I assume these are compatible
>since they both came from the same wsif version in apache cvs.  So far no
>luck.  The same Exception is thrown.
>  
>
interesting - how can I reproduce it?

what is exactly your CLASSPATH? what is WSDL file and what are command 
line parameters you pass to DynamicInvoker?

thanks,

alek

>
>-----Original Message-----
>From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
>Sent: Friday, December 31, 2004 5:36 PM
>To: wsif-user@ws.apache.org
>Subject: Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()
>
>
>i would check that you have right version of saaj.jar that works with
>axis.jar.
>
>HTH,
>
>alek
>
>Gregory Prokter wrote:
>
>  
>
>>Greetings to all,
>>
>>I need help.  I've got the Exception below while doing
>>executeRequestResponseOperation with Provider=ApacheAxis.  I'm running a
>>Requestor very similar to the samples/DynamicInvoker. The Requestor
>>successfully received the WSDL (GET) and successfully sent in the operation
>>request (POST).  Then, the operation was successfully executed and the SOAP
>>message with the right return value sent back to the Requestor - yes, I've
>>been watching TCPMON.  However, because of the exception below, the
>>Requestor code couldn't pass the executeRequestResponseOperation().  Then,
>>    
>>
>I
>  
>
>>rebuilt the wsif.jar with the lattest sources of wsif-2.0, thinking that
>>    
>>
>the
>  
>
>>java.lang.NoSuchMethodError Exception indicates I must've gotten something
>>out of synch, rebuilt my example with the new wsif.jar and ran the
>>    
>>
>Requestor
>  
>
>>again, but the same Exception was trown again.  I wonder why.  Anyone has a
>>clue?
>>
>>Thanks in advance for your help.
>>
>>Greg
>>
>>Exception:
>>==========
>>	[java] java.lang.NoSuchMethodError:
>>org.apache.axis.Message.getSOAPEnvelope()Lorg/apache/axis/message/SOAPEnvel
>>    
>>
>o
>  
>
>>pe;
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.setRespo
>>    
>>
>n
>  
>
>>seContext(Unknown Source)
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.invokeRe
>>    
>>
>q
>  
>
>>uestResponseOperation(Unknown Source)
>>    [java] at
>>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeR
>>    
>>
>e
>  
>
>>questResponseOperation(Unknown Source)
>>    [java] at
>>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker
>>    
>>
>.
>  
>
>>java:295)
>>    [java] at
>>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:10
>>    
>>
>7
>  
>
>>)
>>    [java] Exception in thread "main"
>>
>>
>>
>>    
>>
>
>
>--
>The best way to predict the future is to invent it - Alan Kay
>
>  
>


-- 
The best way to predict the future is to invent it - Alan Kay


RE: Exception in WSIFOperation_ApacheAxis.setResponseContext()

Posted by Gregory Prokter <pr...@comcast.net>.
Thanks Alek.

I've rerun CVS-checkout to get the lattest wsif-2.0.1_IB3 which in its /lib
dir has both: axis-1_2RC2.jar and saaj.jar. I assume these are compatible
since they both came from the same wsif version in apache cvs.  So far no
luck.  The same Exception is thrown.


-----Original Message-----
From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
Sent: Friday, December 31, 2004 5:36 PM
To: wsif-user@ws.apache.org
Subject: Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()


i would check that you have right version of saaj.jar that works with
axis.jar.

HTH,

alek

Gregory Prokter wrote:

>Greetings to all,
>
>I need help.  I've got the Exception below while doing
>executeRequestResponseOperation with Provider=ApacheAxis.  I'm running a
>Requestor very similar to the samples/DynamicInvoker. The Requestor
>successfully received the WSDL (GET) and successfully sent in the operation
>request (POST).  Then, the operation was successfully executed and the SOAP
>message with the right return value sent back to the Requestor - yes, I've
>been watching TCPMON.  However, because of the exception below, the
>Requestor code couldn't pass the executeRequestResponseOperation().  Then,
I
>rebuilt the wsif.jar with the lattest sources of wsif-2.0, thinking that
the
>java.lang.NoSuchMethodError Exception indicates I must've gotten something
>out of synch, rebuilt my example with the new wsif.jar and ran the
Requestor
>again, but the same Exception was trown again.  I wonder why.  Anyone has a
>clue?
>
>Thanks in advance for your help.
>
>Greg
>
>Exception:
>==========
>	[java] java.lang.NoSuchMethodError:
>org.apache.axis.Message.getSOAPEnvelope()Lorg/apache/axis/message/SOAPEnvel
o
>pe;
>     [java] at
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.setRespo
n
>seContext(Unknown Source)
>     [java] at
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.invokeRe
q
>uestResponseOperation(Unknown Source)
>     [java] at
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeR
e
>questResponseOperation(Unknown Source)
>     [java] at
>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker
.
>java:295)
>     [java] at
>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:10
7
>)
>     [java] Exception in thread "main"
>
>
>


--
The best way to predict the future is to invent it - Alan Kay


Re: Exception in WSIFOperation_ApacheAxis.setResponseContext()

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
i would check that you have right version of saaj.jar that works with 
axis.jar.

HTH,

alek

Gregory Prokter wrote:

>Greetings to all,
>
>I need help.  I've got the Exception below while doing
>executeRequestResponseOperation with Provider=ApacheAxis.  I'm running a
>Requestor very similar to the samples/DynamicInvoker. The Requestor
>successfully received the WSDL (GET) and successfully sent in the operation
>request (POST).  Then, the operation was successfully executed and the SOAP
>message with the right return value sent back to the Requestor - yes, I've
>been watching TCPMON.  However, because of the exception below, the
>Requestor code couldn't pass the executeRequestResponseOperation().  Then, I
>rebuilt the wsif.jar with the lattest sources of wsif-2.0, thinking that the
>java.lang.NoSuchMethodError Exception indicates I must've gotten something
>out of synch, rebuilt my example with the new wsif.jar and ran the Requestor
>again, but the same Exception was trown again.  I wonder why.  Anyone has a
>clue?
>
>Thanks in advance for your help.
>
>Greg
>
>Exception:
>==========
>	[java] java.lang.NoSuchMethodError:
>org.apache.axis.Message.getSOAPEnvelope()Lorg/apache/axis/message/SOAPEnvelo
>pe;
>     [java] at
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.setRespon
>seContext(Unknown Source)
>     [java] at
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.invokeReq
>uestResponseOperation(Unknown Source)
>     [java] at
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeRe
>questResponseOperation(Unknown Source)
>     [java] at
>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker.
>java:295)
>     [java] at
>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:107
>)
>     [java] Exception in thread "main"
>
>  
>


-- 
The best way to predict the future is to invent it - Alan Kay


Exception in WSIFOperation_ApacheAxis.setResponseContext()

Posted by Gregory Prokter <pr...@comcast.net>.
Greetings to all,

I need help.  I've got the Exception below while doing
executeRequestResponseOperation with Provider=ApacheAxis.  I'm running a
Requestor very similar to the samples/DynamicInvoker. The Requestor
successfully received the WSDL (GET) and successfully sent in the operation
request (POST).  Then, the operation was successfully executed and the SOAP
message with the right return value sent back to the Requestor - yes, I've
been watching TCPMON.  However, because of the exception below, the
Requestor code couldn't pass the executeRequestResponseOperation().  Then, I
rebuilt the wsif.jar with the lattest sources of wsif-2.0, thinking that the
java.lang.NoSuchMethodError Exception indicates I must've gotten something
out of synch, rebuilt my example with the new wsif.jar and ran the Requestor
again, but the same Exception was trown again.  I wonder why.  Anyone has a
clue?

Thanks in advance for your help.

Greg

Exception:
==========
	[java] java.lang.NoSuchMethodError:
org.apache.axis.Message.getSOAPEnvelope()Lorg/apache/axis/message/SOAPEnvelo
pe;
     [java] at
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.setRespon
seContext(Unknown Source)
     [java] at
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.invokeReq
uestResponseOperation(Unknown Source)
     [java] at
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeRe
questResponseOperation(Unknown Source)
     [java] at
com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker.
java:295)
     [java] at
com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:107
)
     [java] Exception in thread "main"


RE: Async invocation in WSIF and multiple Provider support in a single client

Posted by Gregory Prokter <pr...@comcast.net>.
Thanks a lot, Alek.

I understand now.

Greg

-----Original Message-----
From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
Sent: Thursday, December 30, 2004 4:47 PM
To: wsif-user@ws.apache.org
Subject: Re: Async invocation in WSIF and multiple Provider support in a
single client


Gregory Prokter wrote:

>I've got another question and would appreciate an answer:
>
>Can a single client use multiple Providers to multiple Services?  For ex. A
>client calls WSDL1 over SOAP/HTTP and WSDL2 over JMS and WSDL3 over Java.
I
>don't see why not, since the binding in in WSDL, but haven't run any
>examples with this case and would like to hear howto's and any gotchas in
>doing this.
>
>
i think that should work as long as you use separate ports
(stub/WsifPort) that correspond to different ports in WSDL/service/port.

did you look on multibinding sample?
http://cvs.apache.org/viewcvs/~checkout~/ws-wsif/java/samples/multibinding/R
EADME.html

thanks,

alek

>-----Original Message-----
>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>Sent: Wednesday, December 29, 2004 5:56 PM
>To: wsif-user@ws.apache.org
>Subject: Re: Async invocation in WSIF
>
>
>I'm not sure JMS transport is required for the invoked web service
endpoint.
>I think there is a test example which uses the JMS queue as the destination
>for the response, including persistence if the client happens to be shut
>down when the response arrives, but uses a JMS <-> HTTP bridge to invoke
the
>"ordinary" web service endpoint synchronously.
>
>Jeff
>
>----- Original Message -----
>From: "Gregory Prokter" <pr...@comcast.net>
>To: <ws...@ws.apache.org>
>Sent: Wednesday, December 29, 2004 4:08 PM
>Subject: RE: Async invocation in WSIF
>
>
>
>
>>Jeff-
>>
>>The answer to your Q is YES.
>>
>>Ok, after studying the WSIF code, it appears that the transport indeed has
>>to be JMS in order for WSIFPort_ApacheAxis.supportsAsync() which is called
>>by WSIFOperation_ApacheAxis.executeRequestResponseAsync()  to return TRUE.
>>Otherwise, it return FALSE and
>>WSIFOperation_ApacheAxis.executeRequestResponseAsync() throws
>>
>>
>WSIFException
>
>
>>("asynchronous operations not available"); as indeed happened in my case.
>>
>>This is very disappointing since not ever Web Service supports JMS, but
>>
>>
>all
>
>
>>support HTTP.
>>
>>-----Original Message-----
>>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>>Sent: Wednesday, December 29, 2004 12:40 PM
>>To: wsif-user@ws.apache.org
>>Subject: Re: Async invocation in WSIF
>>
>>
>>Did you look at tests/async in the wsif tree?
>>Jeff
>>----- Original Message -----
>>From: "Gregory Prokter" <pr...@comcast.net>
>>To: <ws...@ws.apache.org>
>>Sent: Wednesday, December 29, 2004 11:54 AM
>>Subject: RE: Async invocation in WSIF
>>
>>
>>
>>
>>>Thanks Jeff.
>>>
>>>Using an asynch transport, like a JMS provider or SOAP Provider on top
>>>
>>>
>of
>
>
>>>JMS is a possible approach to async invocation, but IMO it's rather a
>>>
>>>
>far
>
>
>>>leass advantageous approach than having async invocation in the WSIF
>>>
>>>
>>itself,
>>
>>
>>>regardless of the synch trasport protocol, like HTTP you're running on
>>>
>>>
>top
>
>
>>>of.  See an excellent ref on the subject:
>>>http://www.voelter.de/data/articles/ijwr04.pdf.  I thought and hoped
>>>
>>>
>that
>
>
>>>WSIF.executeRequestResponseAsync() is just that, an async invocation in
>>>WSIF, and in my view if it doesn't work it will undermine considerably
>>>
>>>
>the
>
>
>>>value of WSIF.
>>>
>>>Greg
>>>
>>>-----Original Message-----
>>>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>>>Sent: Wednesday, December 29, 2004 11:33 AM
>>>To: wsif-user@ws.apache.org
>>>Subject: Re: Async invocation in WSIF
>>>
>>>
>>>This answer is not definitive, but may be helpful nonetheless.  I
>>>
>>>
>believe,
>
>
>>>but am not certain, that you need to have a JMS implementation backing
>>>asynchronous calls in WSIF.  This means you need to build Axis with a
>>>
>>>
>JMS
>
>
>>>implementation (such as OpenJMS)  in the class path and similarly make
>>>
>>>
>>that
>>
>>
>>>implementation available in your classpath when WSIF is used.  In
>>>
>>>
>earlier
>
>
>>>incarnations of WSIF, there was some documentation of what was
>>>
>>>
>necessary,
>
>
>>>but I have not looked recently to see if it's still there.
>>>
>>>Jeff
>>>----- Original Message -----
>>>From: "Gregory Prokter" <pr...@comcast.net>
>>>To: <ws...@ws.apache.org>
>>>Cc: <gr...@yahoo.com>
>>>Sent: Wednesday, December 29, 2004 9:14 AM
>>>Subject: Async invocation in WSIF
>>>
>>>
>>>
>>>
>>>>Hello WSIF experts!
>>>>
>>>>Happy New 2005 Year to all!
>>>>
>>>>Recently, I discovered WSIF and it looks awesome!  Have run some
>>>>
>>>>
>>examples
>>
>>
>>>>with it.  Not everything works smoothly and I will have to dive into
>>>>
>>>>
>the
>
>
>>>>code myself, which I will do very reluctantly, since I'd rather
>>>>
>>>>
>>>concentrate
>>>
>>>
>>>>on my project rather than WSIF code, but this is the nature of the
>>>>
>>>>
>open
>
>
>>>>code.
>>>>
>>>>Now to my question.  When I ran an example involving asynch
>>>>
>>>>
>invocation,
>
>
>>>i.e.
>>>
>>>
>>>>ok  = operation.executeRequestResponseAsync(input, responseHandler);
>>>>/* there is a definition of: public class AsyncResponseHandler
>>>>
>>>>
>>implements
>>
>>
>>>>WSIFResponseHandler  {} */
>>>>
>>>>I got this cute Exception:
>>>>
>>>>org.apache.wsif.WSIFException: asynchronous operations not available
>>>>     [java] at
>>>>
>>>>
>>>>
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeR
e
>
>
>>>>questResponseAsync(Unknown Source)
>>>>     [java] at
>>>>
>>>>
>>>>
>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker
.
>
>
>>>>java:291)
>>>>     [java] at
>>>>
>>>>
>>>>
>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:10
5
>
>
>>>>)
>>>>     [java] Exception in thread "main"
>>>>     [java] Java Result: 1
>>>>
>>>>So, is WSIFOperation.executeRequestResponseAsync() avail or not?  What
>>>>versions support it?  I got the lattest stable (downloaded around mid
>>>>December 04).
>>>>
>>>>Need you help ASAP!
>>>>
>>>>Thanks a lot in advance,
>>>>
>>>>Greg
>>>>
>>>>
>>>>
>
>
>


--
The best way to predict the future is to invent it - Alan Kay


Re: Async invocation in WSIF and multiple Provider support in a single client

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
Gregory Prokter wrote:

>I've got another question and would appreciate an answer:
>
>Can a single client use multiple Providers to multiple Services?  For ex. A
>client calls WSDL1 over SOAP/HTTP and WSDL2 over JMS and WSDL3 over Java.  I
>don't see why not, since the binding in in WSDL, but haven't run any
>examples with this case and would like to hear howto's and any gotchas in
>doing this.
>  
>
i think that should work as long as you use separate ports 
(stub/WsifPort) that correspond to different ports in WSDL/service/port.

did you look on multibinding sample?
http://cvs.apache.org/viewcvs/~checkout~/ws-wsif/java/samples/multibinding/README.html

thanks,

alek

>-----Original Message-----
>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>Sent: Wednesday, December 29, 2004 5:56 PM
>To: wsif-user@ws.apache.org
>Subject: Re: Async invocation in WSIF
>
>
>I'm not sure JMS transport is required for the invoked web service endpoint.
>I think there is a test example which uses the JMS queue as the destination
>for the response, including persistence if the client happens to be shut
>down when the response arrives, but uses a JMS <-> HTTP bridge to invoke the
>"ordinary" web service endpoint synchronously.
>
>Jeff
>
>----- Original Message -----
>From: "Gregory Prokter" <pr...@comcast.net>
>To: <ws...@ws.apache.org>
>Sent: Wednesday, December 29, 2004 4:08 PM
>Subject: RE: Async invocation in WSIF
>
>
>  
>
>>Jeff-
>>
>>The answer to your Q is YES.
>>
>>Ok, after studying the WSIF code, it appears that the transport indeed has
>>to be JMS in order for WSIFPort_ApacheAxis.supportsAsync() which is called
>>by WSIFOperation_ApacheAxis.executeRequestResponseAsync()  to return TRUE.
>>Otherwise, it return FALSE and
>>WSIFOperation_ApacheAxis.executeRequestResponseAsync() throws
>>    
>>
>WSIFException
>  
>
>>("asynchronous operations not available"); as indeed happened in my case.
>>
>>This is very disappointing since not ever Web Service supports JMS, but
>>    
>>
>all
>  
>
>>support HTTP.
>>
>>-----Original Message-----
>>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>>Sent: Wednesday, December 29, 2004 12:40 PM
>>To: wsif-user@ws.apache.org
>>Subject: Re: Async invocation in WSIF
>>
>>
>>Did you look at tests/async in the wsif tree?
>>Jeff
>>----- Original Message -----
>>From: "Gregory Prokter" <pr...@comcast.net>
>>To: <ws...@ws.apache.org>
>>Sent: Wednesday, December 29, 2004 11:54 AM
>>Subject: RE: Async invocation in WSIF
>>
>>
>>    
>>
>>>Thanks Jeff.
>>>
>>>Using an asynch transport, like a JMS provider or SOAP Provider on top
>>>      
>>>
>of
>  
>
>>>JMS is a possible approach to async invocation, but IMO it's rather a
>>>      
>>>
>far
>  
>
>>>leass advantageous approach than having async invocation in the WSIF
>>>      
>>>
>>itself,
>>    
>>
>>>regardless of the synch trasport protocol, like HTTP you're running on
>>>      
>>>
>top
>  
>
>>>of.  See an excellent ref on the subject:
>>>http://www.voelter.de/data/articles/ijwr04.pdf.  I thought and hoped
>>>      
>>>
>that
>  
>
>>>WSIF.executeRequestResponseAsync() is just that, an async invocation in
>>>WSIF, and in my view if it doesn't work it will undermine considerably
>>>      
>>>
>the
>  
>
>>>value of WSIF.
>>>
>>>Greg
>>>
>>>-----Original Message-----
>>>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>>>Sent: Wednesday, December 29, 2004 11:33 AM
>>>To: wsif-user@ws.apache.org
>>>Subject: Re: Async invocation in WSIF
>>>
>>>
>>>This answer is not definitive, but may be helpful nonetheless.  I
>>>      
>>>
>believe,
>  
>
>>>but am not certain, that you need to have a JMS implementation backing
>>>asynchronous calls in WSIF.  This means you need to build Axis with a
>>>      
>>>
>JMS
>  
>
>>>implementation (such as OpenJMS)  in the class path and similarly make
>>>      
>>>
>>that
>>    
>>
>>>implementation available in your classpath when WSIF is used.  In
>>>      
>>>
>earlier
>  
>
>>>incarnations of WSIF, there was some documentation of what was
>>>      
>>>
>necessary,
>  
>
>>>but I have not looked recently to see if it's still there.
>>>
>>>Jeff
>>>----- Original Message -----
>>>From: "Gregory Prokter" <pr...@comcast.net>
>>>To: <ws...@ws.apache.org>
>>>Cc: <gr...@yahoo.com>
>>>Sent: Wednesday, December 29, 2004 9:14 AM
>>>Subject: Async invocation in WSIF
>>>
>>>
>>>      
>>>
>>>>Hello WSIF experts!
>>>>
>>>>Happy New 2005 Year to all!
>>>>
>>>>Recently, I discovered WSIF and it looks awesome!  Have run some
>>>>        
>>>>
>>examples
>>    
>>
>>>>with it.  Not everything works smoothly and I will have to dive into
>>>>        
>>>>
>the
>  
>
>>>>code myself, which I will do very reluctantly, since I'd rather
>>>>        
>>>>
>>>concentrate
>>>      
>>>
>>>>on my project rather than WSIF code, but this is the nature of the
>>>>        
>>>>
>open
>  
>
>>>>code.
>>>>
>>>>Now to my question.  When I ran an example involving asynch
>>>>        
>>>>
>invocation,
>  
>
>>>i.e.
>>>      
>>>
>>>>ok  = operation.executeRequestResponseAsync(input, responseHandler);
>>>>/* there is a definition of: public class AsyncResponseHandler
>>>>        
>>>>
>>implements
>>    
>>
>>>>WSIFResponseHandler  {} */
>>>>
>>>>I got this cute Exception:
>>>>
>>>>org.apache.wsif.WSIFException: asynchronous operations not available
>>>>     [java] at
>>>>
>>>>        
>>>>
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeRe
>  
>
>>>>questResponseAsync(Unknown Source)
>>>>     [java] at
>>>>
>>>>        
>>>>
>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker.
>  
>
>>>>java:291)
>>>>     [java] at
>>>>
>>>>        
>>>>
>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:105
>  
>
>>>>)
>>>>     [java] Exception in thread "main"
>>>>     [java] Java Result: 1
>>>>
>>>>So, is WSIFOperation.executeRequestResponseAsync() avail or not?  What
>>>>versions support it?  I got the lattest stable (downloaded around mid
>>>>December 04).
>>>>
>>>>Need you help ASAP!
>>>>
>>>>Thanks a lot in advance,
>>>>
>>>>Greg
>>>>
>>>>        
>>>>
>
>  
>


-- 
The best way to predict the future is to invent it - Alan Kay


Re: Async invocation in WSIF and multiple Provider support in a single client

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
Gregory Prokter wrote:

>Much oblidged, Jeff.  I was thinking to implement something like that, so if
>it works this way great!
>I'm still researching and would love to hear on the subject from Alek or Ant
>or the other authors.  I recall seeing suggestion like this (2 Queues: for
>In and Out) in one of the 2001/2002 presentations by the IBM WSIF folks re.
>async support in WSIF.
>  
>
i am thinking to implement a simple prototype of API for HTTP one-way 
invocations modeling request-response MEP:

    Future<ResultType> result = service.method(param1, param2)

for example:

    Future<String> result = service.echoString("test")

Future is a class in util.concurrent (now part of JDK5 but there is also 
backport to JDK 1.4 with some limitations 
<http://www.mathcs.emory.edu/dcl/util/backport-util-concurrent/>) and i 
think that this could be quite elegant solution to  async results

that would work with WS-Addressing enabled services (so message-id can 
be used for correlation) and would not require JMS.

any thoughts?

thanks,

alek

>I've got another question and would appreciate an answer:
>
>Can a single client use multiple Providers to multiple Services?  For ex. A
>client calls WSDL1 over SOAP/HTTP and WSDL2 over JMS and WSDL3 over Java.  I
>don't see why not, since the binding in in WSDL, but haven't run any
>examples with this case and would like to hear howto's and any gotchas in
>doing this.
>
>Best to all,
>
>Greg
>
>-----Original Message-----
>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>Sent: Wednesday, December 29, 2004 5:56 PM
>To: wsif-user@ws.apache.org
>Subject: Re: Async invocation in WSIF
>
>
>I'm not sure JMS transport is required for the invoked web service endpoint.
>I think there is a test example which uses the JMS queue as the destination
>for the response, including persistence if the client happens to be shut
>down when the response arrives, but uses a JMS <-> HTTP bridge to invoke the
>"ordinary" web service endpoint synchronously.
>
>Jeff
>
>----- Original Message -----
>From: "Gregory Prokter" <pr...@comcast.net>
>To: <ws...@ws.apache.org>
>Sent: Wednesday, December 29, 2004 4:08 PM
>Subject: RE: Async invocation in WSIF
>
>
>  
>
>>Jeff-
>>
>>The answer to your Q is YES.
>>
>>Ok, after studying the WSIF code, it appears that the transport indeed has
>>to be JMS in order for WSIFPort_ApacheAxis.supportsAsync() which is called
>>by WSIFOperation_ApacheAxis.executeRequestResponseAsync()  to return TRUE.
>>Otherwise, it return FALSE and
>>WSIFOperation_ApacheAxis.executeRequestResponseAsync() throws
>>    
>>
>WSIFException
>  
>
>>("asynchronous operations not available"); as indeed happened in my case.
>>
>>This is very disappointing since not ever Web Service supports JMS, but
>>    
>>
>all
>  
>
>>support HTTP.
>>
>>-----Original Message-----
>>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>>Sent: Wednesday, December 29, 2004 12:40 PM
>>To: wsif-user@ws.apache.org
>>Subject: Re: Async invocation in WSIF
>>
>>
>>Did you look at tests/async in the wsif tree?
>>Jeff
>>----- Original Message -----
>>From: "Gregory Prokter" <pr...@comcast.net>
>>To: <ws...@ws.apache.org>
>>Sent: Wednesday, December 29, 2004 11:54 AM
>>Subject: RE: Async invocation in WSIF
>>
>>
>>    
>>
>>>Thanks Jeff.
>>>
>>>Using an asynch transport, like a JMS provider or SOAP Provider on top
>>>      
>>>
>of
>  
>
>>>JMS is a possible approach to async invocation, but IMO it's rather a
>>>      
>>>
>far
>  
>
>>>leass advantageous approach than having async invocation in the WSIF
>>>      
>>>
>>itself,
>>    
>>
>>>regardless of the synch trasport protocol, like HTTP you're running on
>>>      
>>>
>top
>  
>
>>>of.  See an excellent ref on the subject:
>>>http://www.voelter.de/data/articles/ijwr04.pdf.  I thought and hoped
>>>      
>>>
>that
>  
>
>>>WSIF.executeRequestResponseAsync() is just that, an async invocation in
>>>WSIF, and in my view if it doesn't work it will undermine considerably
>>>      
>>>
>the
>  
>
>>>value of WSIF.
>>>
>>>Greg
>>>
>>>-----Original Message-----
>>>From: Jeff Greif [mailto:jgreif@alumni.princeton.edu]
>>>Sent: Wednesday, December 29, 2004 11:33 AM
>>>To: wsif-user@ws.apache.org
>>>Subject: Re: Async invocation in WSIF
>>>
>>>
>>>This answer is not definitive, but may be helpful nonetheless.  I
>>>      
>>>
>believe,
>  
>
>>>but am not certain, that you need to have a JMS implementation backing
>>>asynchronous calls in WSIF.  This means you need to build Axis with a
>>>      
>>>
>JMS
>  
>
>>>implementation (such as OpenJMS)  in the class path and similarly make
>>>      
>>>
>>that
>>    
>>
>>>implementation available in your classpath when WSIF is used.  In
>>>      
>>>
>earlier
>  
>
>>>incarnations of WSIF, there was some documentation of what was
>>>      
>>>
>necessary,
>  
>
>>>but I have not looked recently to see if it's still there.
>>>
>>>Jeff
>>>----- Original Message -----
>>>From: "Gregory Prokter" <pr...@comcast.net>
>>>To: <ws...@ws.apache.org>
>>>Cc: <gr...@yahoo.com>
>>>Sent: Wednesday, December 29, 2004 9:14 AM
>>>Subject: Async invocation in WSIF
>>>
>>>
>>>      
>>>
>>>>Hello WSIF experts!
>>>>
>>>>Happy New 2005 Year to all!
>>>>
>>>>Recently, I discovered WSIF and it looks awesome!  Have run some
>>>>        
>>>>
>>examples
>>    
>>
>>>>with it.  Not everything works smoothly and I will have to dive into
>>>>        
>>>>
>the
>  
>
>>>>code myself, which I will do very reluctantly, since I'd rather
>>>>        
>>>>
>>>concentrate
>>>      
>>>
>>>>on my project rather than WSIF code, but this is the nature of the
>>>>        
>>>>
>open
>  
>
>>>>code.
>>>>
>>>>Now to my question.  When I ran an example involving asynch
>>>>        
>>>>
>invocation,
>  
>
>>>i.e.
>>>      
>>>
>>>>ok  = operation.executeRequestResponseAsync(input, responseHandler);
>>>>/* there is a definition of: public class AsyncResponseHandler
>>>>        
>>>>
>>implements
>>    
>>
>>>>WSIFResponseHandler  {} */
>>>>
>>>>I got this cute Exception:
>>>>
>>>>org.apache.wsif.WSIFException: asynchronous operations not available
>>>>     [java] at
>>>>
>>>>        
>>>>
>org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.executeRe
>  
>
>>>>questResponseAsync(Unknown Source)
>>>>     [java] at
>>>>
>>>>        
>>>>
>com.edrient.manager.samples.wsif.DynamicInvoker.invokeMethod(DynamicInvoker.
>  
>
>>>>java:291)
>>>>     [java] at
>>>>
>>>>        
>>>>
>com.edrient.manager.samples.wsif.DynamicInvoker.main(DynamicInvoker.java:105
>  
>
>>>>)
>>>>     [java] Exception in thread "main"
>>>>     [java] Java Result: 1
>>>>
>>>>So, is WSIFOperation.executeRequestResponseAsync() avail or not?  What
>>>>versions support it?  I got the lattest stable (downloaded around mid
>>>>December 04).
>>>>
>>>>Need you help ASAP!
>>>>
>>>>Thanks a lot in advance,
>>>>
>>>>Greg
>>>>
>>>>        
>>>>
>
>  
>


-- 
The best way to predict the future is to invent it - Alan Kay