Changes to XSOAP 1.2
In (not so distant) future:
- CoG security provider unit tests (with delegation)
- add better handling of exceptions in Java-Java case
2004-11-
- added support for TCP port ranges to allow using of range of ports opened on firewall.
To use this pass system property with ranges of TCP ports a "MIN-MAX". To make
sure it worked use logger with at least :CONFIG level, example:
java -Dxsoap.port.range=7001-7002 -Dlog=:CONFIG
2004- (not released XSOAP_1_2_29)
- 2003-11-24: fixed NPE bug reported by Anatolij Zubow in
hello.HelloServiceImpl.sayHello() when this method tried to access connection
context properties and they were nto set as hello service was running inside
servlet container
2003-11-14 (XSOAP_1_2_28)
- added support to produce SOAP 1.1 Faults that are compatible with WSDL 1.1
description (and should increase AXIS and OGSI interoperability):
soaprmi.RemoteException can take as first parameter XmlNode that
will be serialized as first child of SOAP-ENVELOPE:Fault
- fixed bug in XmlNodeHandler as it tried to read namespace declarations even
if there was no declarations at some ancestor
- forced use of no mixed content is soap dispatcher on pull parser obtained
from pool (SoapDispatcherImpl)
- changed XmlNodeHandler so when passing xsd:any as XmlNode it has all
in-scope namespace prefixes added to XmlNode
2003-10-17 (not released XSOAP_1_2_27)
- fixed bug related to propagation of HTTP headers and other server connection properties
(available from soaprmi.soaprpc.SoapServices.getDefault().getConnectionContext().getIncomingProps().get("provides.http.headers");)
2003-04-29 (XSOAP_1_2_24)
- fixed bug that prevented XSOAP from unmarshalling remote reference
if signature of receiving method contained interface ...
2003-04-19 (XSOAP_1_2_23)
- updated logger with more detailed output and more flexible API,
see list of miniLogger changes for details
- added lib/jakarta-regexp to make ANT taks
replaceregexp
task works on versions prior to JDK 1.4
- changed default mapping for java.util.Date from xsd1999:timeInstant to xsd:dateTime
- fixed DateHandler to emit dateTime in 2001 XSD and not deprecated 1999 timeInstant
(bug 47)
- added version support to XSOAP through soaprmi.Version that allows
both easy compatibility checks (require() function) and to obtain current verion
as String (one for main version and another for implementation version)
(bug 42)
- unified handling of Object and XmlNode including arrays
(bug 44)
- allowed to serialize array of string with null values
(bug 43)
- fixed bug in setWriter() from SoapSerializeContextImpl that did not call reset()
(calling reset() in close() is not enough if close() is not called between multiple uses
of serialization context)
- added Soap.XSI_NS_CURR_NULL to represent either xsi:nil (XSI_NS_2001_NIL) or
xsd:null (XSI_NS_1999_NULL) depending on whatcurrent XML Schema is selected
- added flag SoapStyle.MULTI_REF that controls if multi-ref serialization style
should be used; added new default SoapStyle.APACHESOAP that is both doing deep
serialization and supports multi reference for maximum interoperability
and modified code to not use IBMSOAP (that is serialization that does not support muti-refs)
- added mapping of xsd:any to XmlNode to make possible to get array of XmlNode (de)serialized ...
- fixed bug in array deserializer that made impossible to have array element with empty string
2003-03 (XSOAP_1_2_21 and XSOAP_1_2_22)
- internal version - for testing
2002-12-12 (XSOAP_1_2_20)
- this change MAY be affecting interoperability with old
SOAP implementations but should improve interoperability with current SOAP toolkits that
by default uses current official 2001 namesapce for XML Schemas and not old 1999 or 2000:
XSOAP uses now the offcial XML schemas namespace 2001
(XSOAP will still be able to process 1999 namesapces though but will always respond
using 2001 namespaces)
- changed serializer to use IdentityMap (implementation taken from Serp project)
so different object instances that
return equals() true will have preserved their identity preserved
(for example two string strings: new String("a") and new String("a") will be two different
object in serialization object graph)
- added code to allow empty array to be represented as [] instead of [0]
(this differs from SOAP 1.1 see http://www.w3.org/TR/SOAP/#_Toc478383513 and arrayTypeValue/asize defintions
however it improve interoperability with other SOAP implementations such as GLUE)
- added support for character arrays (char[]) with char
mapped to xsd:unsignedShort (0..65535)
and serialized as array of xsd:unsignedShort
- changed Util.loadClass to use AccessController.doPrivileged to call
Thread.currentThread().getContextClassLoader(),
added Util.setClassLoader() that sets class loader to use by XSOAP
for all class loading, and fixed Struct.makeStructAccessor() to use Util.loadClass()
(reported by Mark Swanson when runnning XSOAP inside Web Start with minimum
security settings)
- added support for long[] (it should have been done long time ago ...)
- wrapped calls to System.getProperty() for "log" and "debug" into
AccessController.doPrivileged() with catching AccessControlException
to allow running XSOAP even if system properties can not be accessed
(thanks to Mark Swanson for reporting this problem when running XSOAP inside Web Start)
- appplied bug fixes from Mark Swanson: in HttpSocketSoapInvocationHandler incorrect
selection of default TCP port and in MethodInvoker more robust
parsing to allow empty content of <faultstring>
- added CoG dependency check
for JSSE provider (as it uses CoG to get globus proxy used as SSL client certificate)
- added get/setSoTimeout to wrapped socket returned from CogServerSocketFactory.accept
as those methods in default (Iaik)GSIBaseSocket are not implemented
- changed cog_delegation to use unlimted proxy delegation
added cog_delegation_limited security provider for linited delegation
- changed to use NoAuthorization intead of SelfAuthorization for CogServerSocketFactory
- changed Base64Handler to use xsd:base64Binary instead of soapenc:base64
to improve interoperability with other SOAP toolkits
- fixed bug in BASE64 serialzier (Base64Handler) that was not using
standard sctx.writeStart/EndTag and it was leading to exception when
tag name to use was null in case of writing top level object in multi-ref serialization
(reported thanks to Stefano and Lou!)
- added unit test for embedded BASE64 byte[] inside struct
and with two refereces to the same arr for multi-ref
2002-11-14 (XSOAP_1_2_19)
- fixed on cog_delegation code that does proxy delegation to do it directly and avoid using
BaseServer from CoG (thanks to Shava and Gopi for reporting problems with delegation)
- made ThrowableRewrapper more flexible in unwrapping exceptions
2002-11-11 (XSOAP_1_2_18b)
- updated license in all files (have not realized how many .java files there is in XSOAP ...)
- added to hello service sample ability to chain multiple services - good for testing
globus proxy delegation as client can call hello service that calls
another chained hello service and so on ...
- added utility class
soaprmi.util.dynamic_proxy.ThrowableRewrapper
to allow rewrapping of RemoteException for remote objects that are exposed
to users with exceptions that does not inherit from RemoteException ...
2002-11-1 (XSOAP_1_2_18a)
- fixed NPE (NullPointerException)
bug in JSSE/COG security providers when accessing incoming props
that were not yet set (no incoming remote call) ...
2002-10-31 (XSOAP_1_2_18)
- fixed an elusive bug that manifested itself in old versions as "context must
be closed before it can be reused" (one could say that this bug was even haunting as it is Halloween :-))
in polling of deserCtx: in Unmarshaller returnDeserializeContextToPool()
and close() were called even though close() already was calling returnDeserializeContextToPool()
and in some rare situations when server was multitasking heavily led to duplicates in pool ...
- making sure that pooled deserialization context is properly closed
before handing it over (Soap.getDefault().getDeserializeContext())
- added DeserializationContextt.isClosed() to pool methods in Soap class
can close unclosed deserialization contexts when returning them to pool
- allow (de)serialization of arrays of interfaces even if interface was not mapped
when auto mapping is enabled. added new method to XmlJavaMapping to control
interfaces namespace uri to use for array components (setDefaultArrayComponentInterfaceNsPrefix())
- updated CoG jar file to the latest official version (0.9.13)
and also checked that XSOAP compiles fine with version from CVS version (checked on 2002-10-27)
2002-10-27 (XSOAP_1_2_17)
- modified CogClientSocketFactory and JsseClientSocketFactory
to use proxy that is in current thread connection context.
That should allow to pass through globus proxy credentials when server conenction thread
is used ot conenct to other services that requires GSI delegation.
2002-10-23 (XSOAP_1_2_16)
- fixed Unmarshaller to avoid reading past element (not call dctx.done())
- added to Unmarshaller ability to read directly from pull parser, ex.:
unmarshal(Class baseClass, XmlPullParser parser)
- changed hello_server so it will install inteceptor that check
globus dlegated proxy only when requested by command line option
-check_delegation.
(for example run hello_server -check_delegation -secure -securityprovider jsse 8877).
- changed again JSSE security context to use CoG API to read multiple CA certs
from cog.properties (suggested by Shava!)
- changed JSSE security context to set multiple CoG trusted certs from cog.properties
and modified ReadProperties to return trusted CA cerets as String[]
- fixed potential problems with exceptions that were not propagated (but just caught ...)
in soaprmi.security.jsse.*
- fixed SoapSerializeContextImpl.close() to call flush() on underlying writer
(thanks to Yogesh!)
- changed SoapEnc.readObject() to be able to deserialize XmlNode even if
expected type is Object: added check that target java type (derived from mapping)
implements XmlNode and if it is true then to bypass deserializer querying and
return reconstructed XmlNode directly (see sample SimpleMessageSource in XMessages)
2002-07-16 (XSOAP_1_2_15)
- XSOAP now passes all Round 2 interop tests with Apache SOAP and Axis, see
Apache
Soap 2.3+ and Apache Axis Client Interop Results (results are posted daily,
look for SoapRMI)
- moved reading of id sttribute and setting id value fixup from
struct and array deserialziers to SoapEnc.readObject - this will
allow more objects t be used as multirefs identifiable by id attribute
- added suppord for xsd:decimal, xsd:hexBinary,
Hashtable (as defined in Apache SOAP in namespace uri
"http://xml.apache.org/xml-soap" and with local name "Map")
and updated interopability sample
- added deserialization support for href on top level return element
(it is sent by Axis in response to echo array but by no other SOAP implementation ...)
2002-07-10 (XSOAP_1_2_14)
- updated FAQ
with entries about accepting and returning XML fragments
(by using
XmlNode)
and how to use XML schemas in XSOAP (by generating
Java Beans using such data binding tool like Castor)
- new GOOGLE web services API sample: demonstrates how to use XSOAP with
Google API.
Before using make sure to get your secret key from Google :-)
- allow to set default timeout from System.getProperty:
changed HttpSocketSoapInvoker to static defaultTimeout,
that is now 4 minutes (4 * 60 * 1000 milliseconds)
until overridden System property
xsoap.rpc.invoke.timeout.ms
(that can be set from command line
-Dxsoap.rpc.invoke.timeout.ms=X [in milliseconds])
- more debugging for sent and received characters in HttpUtils
(including char-by-char parsing of HTTP response)
that can be turned on by enabling special verbose logger
soaprmi.verbose.trace.invoker
(from command line for example use
-Dlog=soaprmi.verbose.trace.invoker)
- fixed HttpUtils to detected EOF (-1) instead of going into infinite loop
- this version number is bumped up to skip unlucky thirteen :-)
2002-06-24 (XSOAP_1_2_12)
- added support for mapping any XML content (<xsd:any>)
- it is enough to declare input parameter or return value type as
XmlNode.
- added support for BASE64 encoding and decoding of byte arrays
- added new logging levels to facilitate tracing:
- soaprmi.trace.execution shows messages for execution on server side
- soaprmi.trace.dispatch.in shows incoming requsts on the wire
- soaprmi.trace.dispatch.out shows putgoing responses on the wire
- soaprmi.trace.invoke.out shows outgoing invocation on the wire
- soaprmi.trace.invoke.in shows incoming response on the wire
- added to hello sample an example of how to customize interface (portType)
mapping for parameter names
2002-03-19 (XSOAP_1_2_11)
- IN PROGRESS: added per thread ConnectionContext that allow to get properties
for incoming call (such as socket, GSI delegation, headers)
and set outgoing properties (GSI delegation to use, headers)
- IN PROGRESS: limited support for WSDL as alternative
representation of XSOAP remote reference
- fixed bug related to registration of RemoteRef serializer and converter
- as lock was not maintained on EncodingStyle enc = SoapEnc.getDefault();
it could happen that serailizer/converter would be registered twice
and that resulted in exception...
2002-03 (interim release XSOAP_1_2_10)
- refactored mapping support to expose mapping java methods/parameters
to messages and part maps
- fixed bug in minilogger (see
minilogger
changes log)
2002-02-22 (XSOAP_1_2_9)
- applied patch provided by Ullrich Pollähne to fix problem with missing HTTP cookie support
- added abillity to set default SoapStyle and this is used by all serialization
- currently the same as previously hardcoded SoapStyle.IBMSOAP (that is compatible
with Apache SOAP 2.x)
2001-12 (XSOAP_1_2_8)
- added Vector serializer to array and converter of arrays to Vector
see VectorSerializer.java and VectoConverter.java
- improved and simplified (de)serialization registration in EncodingStyle
(such as SoapEnc)
- improved array de/serialization: handling of null value array items
(they must be always serialized independent of SOAP style)
- improved SoapEnc.readObject to deserailize using xsi:type if available
(fixing bug when expectedType is unkown)
2001-11-29 (XSOAP_1_2_7)
- moved logging utility classes to minilogger sub-folder
so can be compiled and used separately from XSOAP
(in future minilogger should be have more configurable output adapter).
- changed "Class.forName" to use context class loader
so hopefully it works better in servlet container environment
- added HelloSpeedTest.java that demonstrates impact
of keep-alive on example of HttpURLConnection (when used KA
XSOAP is almost twice fast...). for now XSOAP is not
doing keep-alive but open/close socket for each invocation
- fixed bug related to synchronization in MethodInvoker that
could manifest in exception when RemoteRefSerializer
was registered twice
(thanks to Mark Swanson for finding it)
2001-11-07 (VER_1_2_6)
- added ability to override IP address of host that is provide by Java
and that doe snot work on multi-homed IP machines or some RedHat instalations :-)
simply use
-Dxsoap.host.ip=IP_ADDR system property
(can be set with JAVA_OPTS when run script used)
2001-11-01 (VER_1_2_3)
- addded new extensible security framework (see under src/java/security)
- numerous small bug fixes and improvements
2001-08-19 (VER_1_2_0)
Summary of changes from SoapRMI 1.1:
[Back To XSOAP Documentation]
Aleksander Slominski