Changes from 1.0 to 1.1 that may break your code

  • We have changed how we map http URLs to packages, such that any directories in the URL are used as well as the hostname. The previous behavior was a defect, as it would import WSDL from the same site into the same place. If you do not explicitly state the mappings of URIs to packages, things may now end up in different places
  • The default socket timeout for clients is now 60 seconds, not infinity. You can use the setTimeout() option on any binding (cast it to an org.apache.axis.client.Stub first) to change this.
  • The API for writing custom schema from a Serializer (writeSchema()) has changed! We now return an Element which should be suitable for either dropping under an <element> or <attribute> declaration as an anonymous type OR for putting a name="" attribute on and making global in the schema. See any of our included serializers (MapSerializer is a good'un) for an example.

Changes from 1.1RC2

For a full list of ALL changes in CVS since 1.1RC2, click here.

Changes from 1.0 to 1.1

  • Vastly improved SOAP 1.2 support
  • There is a new email transport in transport/mail
  • Added serializers/deserializers for Castor compatibility
  • Improved WSDL schema generation APIs for custom types
  • Added CORBA and RMI providers
  • Improved EJBProvider's ability to be a "good EJB citizen" (deals better with JNDI, etc)
  • Improved multiref deserialization code
  • Axis supports JMS for reliable messaging between client and server. Note that the actual wire format of JMS messages is vendor-specific at present, so you may not be able to use this to connect arbitrary JMS clients and servers without special bridging software. Refer to your particular JMS vendor for details. (rule-of-thumb is "if you can get a JMS connection working, we can talk SOAP over it." :))
  • We include a more recent version of wsdl4j.jar (23/mar/2003).
  • The misnamed org.apache.axis.encoding.DefaultSOAP12TypeMappingImpl is now called DefaultSOAPEncodingTypeMappingImpl (the old class is still there but deprecated)
  • Log4J 1.2.8 is the version of log4J we use, though Axis still works with older versions (i.e. we dont use the XML configuration mechanism.).
  • Many more WSDL and interop issues reported (thank you!) and fixed.
  • One late breaking interop fix was a workaround for a bug in .NET1.0, which does not like empty arrays very much. This fix is not enabled by default. If you have trouble with .NET1.0 clients handling arrays, look up axis.sendMinimizedElements in the global configuaration section of the reference manual.
  • Axis Ant tasks are now documented, and are much enhanced.
  • Fixed a bug where clients running Java1.4 needed servlet.jar on their classpath
  • Fixed a bug with Axis shutdown on Tomcat 3.3.1
  • Various documentation tweaks: improved installation guide, more reference documentation and a new security guide for anyone using Axis in production.
  • On the subject of security, three security issues were fixed; two related to XML entity/file inclusion on inbound messages and one potentially enabling cross-site-scripting.
  • Tcpmon lets you specify delays in message handling: sleep times in milliseconds every so-many bytes sent or received. This is useful if you want to see what happens to your client application over a slow link. Usually it becomes clear that your client application grinds to a halt unless all the calls are in a separate thread from any GUI.
  • Attachments are extended with direct access to the filename, and the ability to detach the file from the AttachmentPart so it wont get deleted on cleanup. Yes, attachments should now get automatically cleaned up when their owning AttachmentPart is finalized. Look at the javadocs for the specifics.
  • CommonsHTTPSender updated to use Jakarta Commons's HTTPClient 2.0 RC3

Improvements in Exception Handling

The JAX-RPC specification of exceptions is now implemented; you may well be able to send abitrary exceptions over the wire and have them retranslated into Java Exceptions at the far end. Of course, non-Java destinations have a little problem there, all they get are the XML details to make sense of somehow. There is a lot to be said for creating, filling and throwing an AxisFault directly, and documenting the faultdetails elements for callers of all languages to make sense of. Axis now makes it easier to work with these details; consult at the AxisFault javadocs to see the new fault detail methods.

Axis no longer reports AxisFaults at INFO level on the client or server, unless you configure the logging parameters to do so; see the reference documents for details on how to do this. There is one exception: we do log server-side any AxisFaults created from RunTimeExceptions that are thrown by web service methods you implement. This is because those are usually bugs (like null pointer exceptions) that service developers like to know about before

For security reasons we have stopped sending stack traces over the wire to callers by default. The reference manual shows how to enable this on development systems.

Finally, we know we still have more to do to get exceptions fully under control. For example, global OnFault handlers are apparently not called consistently, and we need to do a lot more interop testing across platforms and languages. We also need a willing volunter to provide a guide to exceptions in SOAP and Axis.