Both the ApacheAxis and ApacheSOAP providers can support the protocols
referred to in DynamicInvoker as "soap" and "axis".  There are two separate
tokens only to allow a choice to be made.  I think the ApacheAxis provider
is the WSIF default for SOAP over HTTP and is probably more up-to-date.  In
any case, unless you observe a difference in behavior when you switch (for
instance, if there were a bug in the axis provider not present in the soap
provider), there's no very good reason not to use the Axis provider.
If you want to try the ApacheSOAP provider, use the "soap" protocol token on
the command line running DynamicInvoker.

Here are some speculative suggestions about the exception you're seeing:

Support for doc/lit bindings has been improving rapidly in Axis recently,
which means it was weak before, and probably worse in ApacheSOAP.  You
should review the parts of the Axis user guide and WIKI referring to types
of bindings, and decide whether you intended to use the wrapped variant of
doc/lit or not, or whether you intended to use doc/lit at all!  If you want
doc/lit but not wrapped, you might have to change some names so the funky
assumptions that Axis uses to decide whether to unwrap can be violated.  Are
you perhaps invoking an operation whose input message has no parts?  From
your exception trace it looks as though something is expecting to find a
non-empty ArrayList, and fails when that list is empty by referencing the
non-existent first element.

It's possible that using a later version of WSIF might avoid this problem.

Jeff

----- Original Message ----- 
From: "Honorez Dylan" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, July 23, 2004 7:59 AM
Subject: RE: SOAP vs AXIS


Hi,

No it didn't change anything. Apperantly, when the getPort command is
executed, I get a wrong provider assigned dynamically. I am using a jax-rpc
webservice, but I get an Axis Provider.

Have you got any clue how I fix this?

Kind Regards,
Dylan Honorez,
[EMAIL PROTECTED]
http://www.xt-i.com
________________________________________
From: Raghunath Parthasarathi Krishnaswamy [mailto:[EMAIL PROTECTED]
Sent: vrijdag 23 juli 2004 10:42
To: [EMAIL PROTECTED]
Subject: Re: SOAP vs AXIS


Hi,

Below log looks like you are using SOAP WS with AXIS WSIF Dynamic Provider.
Try to comment out the below code in Dynamic Invoker source.

// The default SOAP provider is the Apache SOAP provider. If Axis was
specified
// then change that
if ("axis".equals(protocol)) {
WSIFPluggableProviders.overrideDefaultProvider(
"http://schemas.xmlsoap.org/wsdl/soap/";,
new WSIFDynamicProvider_ApacheAxis());
}

Let me know the result.

regards
raghu

R a g h u n a t h P K
------------------------------------------------- 
Technical Lead - Business Integration

IBM Global Services India
Level 2, Prestige Towers,
#99, Residency Road,
Bangalore 5260025, India



"Honorez Dylan" <[EMAIL PROTECTED]>
07/22/2004 06:57 PM
Please respond to
wsif-user

To
<[EMAIL PROTECTED]>
cc

Subject
SOAP vs AXIS







Hi again,

I found something strange in the ouput I get with my tests:

- WSIF0006W: Multiple WSIFProvider found supporting the same namespace
URI 'http://schemas.xmlsoap.org/wsdl/soap/'. Found
('org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAx
is,
org.apache.wsif.providers.soap.apachesoap.WSIFDynamicProvider_ApacheSOAP
')
- WSIF0007I: Using WSIFProvider
'org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxi
s' for namespaceURI 'http://schemas.xmlsoap.org/wsdl/soap/'

shows up when I execute getPort(). After that I get a stacktrace. Why
does the WSIF framework chooses Axis as provider, when my WSDL is
clearly defined to use with SOAP? Is this normal, or is this what's
causing the stacktrace afterwards?

Stacktrace:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:507)
at java.util.ArrayList.get(ArrayList.java:324)
at org.apache.wsif.util.WSIFUtils.unWrapPart(Unknown Source)
at
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.unwra
pSOAPParts(Unknown Source)
at
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.prepa
re(Unknown Source)
at
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.invok
eRequestResponseOperation(Unknown Source)
at
org.apache.wsif.providers.soap.apacheaxis.WSIFOperation_ApacheAxis.execu
teRequestResponseOperation(Unknown Source)
at AnotherTest.main(AnotherTest.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.intellij.rt.execution.application.AppMain.main(Unknown
Source)
Exception in thread "main" Process terminated with exit code 1

Also, I'd like to know if empty input services (with no parameters) are
supported. I also haven't figured out how you get the parts out of the
output message? Is the naming there done by using the WSIF and get the
output parameters from there? I haven't been able to test that because
of the neverending stack trace.

Again, my WSDL is included.

Met vriendelijke groeten,
Dylan Honorez,
[EMAIL PROTECTED]
http://www.xt-i.com




Reply via email to