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
