# Axis Change Log

## Axis 1.4

### Changes from 1.3 final

Many bugfixes, including:

- Prevented an NPE when curMsg is null
- Fixed memory leaks
- Fixed incorrect serialization of extended types in arrays
- Fixed garbage collection for TypeDesc mappings
- Fixed a problem with exception deserialization
- Updated outdated version numbers in documentation
- Fixed an issue that caused non-Sun JVMs to generate a CurrentModificationException
- Fixed a problem with wsdl2java-generated class constructors

## Axis 1.3

### Changes from 1.2.1 final

- Support Axis inside Applets
- Upgrade versions of dependency jars
- Updated xmlbeans serializer/deserializer
- Fixes for SAAJ
- Fixes for Code Generation
- Fixes for tools
- Fixes for Runtime
- Fixes for Performance
- Fixes for various attachments problems
- Fixes for Memory Leaks
- Cleanup support for JavaBeans with array-type properties
- Extract attachment streams directly from http request (w/o intermediate files)
- GC Fixes for long standing servers (Geronimo)
- Preliminary support for MTOM

## Axis 1.2.1

### Changes from 1.2final

- Cleanup array handling for rpc/lit and doc/lit
- Enhancements to HTTPSender/CommonsHTTPSender (including better cookie support)
- Generate array of wrappers for soapenc array nillable elements
- Better handling of elementFormDefault during dynamic wsdl generation
- Fix for gracefully handling IncompatibleClassChangeError in websphere/weblogic
- Better SAAJ support (dirty flag was not set leading to serialization problems)
- Fix out-of-memory errors for services without attachments returning large response messages
- Last but not the least more test cases...

### Changes from 1.2rc3

- Tons of changes to typemapping system to better support jax-rpc1.1 and .NET
- Improved SAAJ 1.2 support
- Much better for rpc/lit and doc/lit (especially for arrays)
- Map schema "wrapped" arrays (with inner <item> elements) into arrays of the item type, instead of JavaBeans, by default. Introduce the "-w" or "--wrapArrays" option to WSDL2Java to switch back to the earlier behavior.
- Fix some WS-I related bugs. Makes it easier to deploy WS-I BP compatible services.
- Internationalized happyaxis jsp pages.
- Updated to latest dependency jars. (ex wsdl4j-1.5.1.jar)
- Improved commons httpclient support.
- Support for sending and receiving multiple cookies
- Lots of fixes for performance enhancements (including eliminating ThreadLocal's)
- Improved JMX support - Start/Stop server/services and deploy/modify services

### Changes from 1.2beta2

- When generating WSDL, don't change the scoping rules for type mappings. In other words, use the most specific mappings just like we do for message processing.
- Fix problem with version string
- Remove JAXP interfaces (should come from jaxp.jar, not jaxrpc.jar)

### Changes from 1.1

- Preliminary SAAJ 1.2 support!
- Improved doc/literal support
- Improved handling of array types + WSDL generation
- More logical type mapping registration (SOAP-ENC types are in a separate registry which then delegates to the default one)
- Improved schema support (we deal with lists and groups now)
- ServiceDesc metadata is now more generic - ServiceDesc is an interface and JavaServiceDesc implements it to do specific Java processing.
- Throw fault when bad values for "mustUnderstand" attribute are parsed
- log4j.properties is no longer in axis.jar. This is to avoid conflicts with the configuration files in other bits of the application.
- Many bugfixes. See docs/svnlog.txt

## Axis 1.1

### 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.

### Older Changes

More changelogs can be found on the Axis website.