These release notes contain a summary of new features and enhancements, late-breaking product issues, and bug fixes. The information relating to the most recent release appears first in this document. Following sections contain release notes for all relevant prior releases. The notes for all prior releases are applicable to the most recent release as well. For change logs or other information on previous releases, please contact Technical Support.
HydraExpress may contain undocumented interfaces. These interfaces are not supported for general use and may be changed or removed from release to release.
The version of this document in the product distribution is a snapshot at the time the product distribtion was created. Additional information may be added after that time because of issues found during distribution testing or after the product is released. To be sure you have the most up-to-date information, see the version of this document on the HydraExpress documentation web site: https://help.perforce.com/hydraexpress
To take advantage of new product features and improvements, and to ensure that your product is supported, install a current version. For a list of supported product versions, along with maintenance and end-of-life (EOL) information, see https://portal.perforce.com/s/article/HydraExpress-Maintenance-Lifecycle.
This release adds support for numerous updates to major supported operating systems and compilers. Please see the Support Matrix at https://help.perforce.com/hydraexpress/current/Supported_Platforms.html for details.
SourcePro Users: HydraExpress 2025.2 is certified with SourcePro Version 2025.2.
Added support for Solaris 11 SPARC and x86. (HYEXPRESS-4847)
Added support for Windows 11. (HYEXPRESS-4557)
Added support for Visual Studio 2022. (HYEXPRESS-4556)
Added support for Red Hat Enterprise Linux 10. (HYEXPRESS-4792)
Added support for Visual Studio 2026. (HYEXPRESS-4910)
Switched to system ICU on all supported platforms. The bundled ICU library has been removed. (HYEXPRESS-4909)
Updated concurrency patterns in HydraExpress, reducing the use of explicit mutexes, busy-waits, and other critical sections. (HYEXPRESS-4887)
Improved exception handling on Solaris by removing the limitation
that prevented function names from being returned by
rwsf::Exception::getFunctionName().
(HYEXPRESS-4906)
Added support for the AJP13 CPing/CPong keep-alive protocol,
allowing mod_jk workers configured with ping_mode to
communicate correctly with the HydraExpress AJP13 connector.
(HYEXPRESS-4730)
Removed Apache Tomcat Connector (mod_jk) from distribution. (HYEXPRESS-4850)
Dropped support for Windows 10. (HYEXPRESS-4925)
Dropped support for Visual Studio 2019. (HYEXPRESS-4921)
Upgraded to OpenSSL 3.0.20. (HYEXPRESS-4920, HYEXPRESS-4980)
SourcePro Users: HydraExpress 2025.1 is certified with SourcePro Version 2025.1.
Added support for Red Hat Enterprise Linux 9. (HYEXPRESS-4783)
Upgraded the C++ dialect to C++14. (HYEXPRESS-4785)
Upgraded Xerces-J dependency to 2.12.2. (HYEXPRESS-4434)
Upgraded XML Commons dependency to 1.4.01. (HYEXPRESS-4434)
Added support for system OpenSSL on Red Hat Enterprise Linux and SUSE Linux Enterprise Server. (HYEXPRESS-4677)
Upgraded to OpenSSL 3.0. (HYEXPRESS-4677)
Upgraded to ICU 74.2. (HYEXPRESS-4788)
Removed dependency on log4j. (HYEXPRESS-4469)
Dropped support for 32-bit builds. (HYEXPRESS-4784)
Dropped support for Oracle Solaris. (HYEXPRESS-4775, HYEXPRESS-4843)
Dropped support for IBM AIX. (HYEXPRESS-4777)
Dropped support for Red Hat Enterprise Linux 7. (HYEXPRESS-4781)
SourcePro Users: HydraExpress 2020.0.1 is certified with SourcePro Version 2020.
SourcePro Users: HydraExpress 2020 is certified with SourcePro Version 2020.
attribute or complexType was named
"Attribute". (HYEXPRESS-4213)SourcePro Users: HydraExpress 2019 is certified with SourcePro Version 2018.2.
The rwsfserver script now includes an optional
--wait flag. When specified with the start
action, rwsfserver waits until the agent has stopped before
returning. (HYEXPRESS-3987)
WSDL files containing an XML schema definition with either
multiple namespace attributes on a single element, or a single namespace
attribute on a xsd:include or xsd:import
element, no longer fail during rwsfgen code generation.
(HYEXPRESS-4007)
Both SSL 2.0 and SSL 3.0 have been deprecated and are no longer considered secure. To prevent secure communication from potentially falling back to these protocols, they have been disabled. (HYEXPRESS-4086)
Remapping an XML element name that has the same name as the XML
Schema Definition (XSD) file will no longer be ignored during
rwsfgen code generation. (HYEXPRESS-4122)
XML Binding now embeds common schema files, avoiding a network query when those files are imported or included. (HYEXPRESS-4218)
SourcePro Users: HydraExpress 4.9.2 is certified with SourcePro Version 2016.
Added an rwsf:httpSessionIdGenerator parameter on
the servlet handler class ServletMessageInfoHandlerImp to
register a custom session ID generator. (HYEXPRESS-3952)
Enhanced the security of the default session ID generator by both increasing the session ID string length and employing more robust methods of obtaining unique strings. (HYEXPRESS-4019)
Fixed a bug in which unmatched quotes in SOAPAction headers caused the Agent to halt. Now, an HTTP 400 error is returned. (HYEXPRESS-4035)
SourcePro Users: HydraExpress 4.9.1 is certified with SourcePro Version 2016.
SourcePro Users: HydraExpress 4.9 is certified with SourcePro Version 2016.
-minimizeincludes code generator option to
eliminate unnecessary include directives from generated header files.
This option can be used to avoid circular header dependencies.
(HYEXPRESS-3582)SourcePro Users: HydraExpress 4.8 is certified with SourcePro Version 13.1.
Resolved a compilation error that occurred when the pattern facet
included ". (HYEXPRESS-3400)
Resolved a java.lang.StackOverflowError that
occurred in code generation when a schema type contained an element of a
type that extended from itself. (HYEXPRESS-3407)
Resolved a circular dependency in generated header files that resulted in a compilation failure. (HYEXPRESS-3407)
Resolved issues relating to use of NaN with the
constraining facets minInclusive,
maxInclusive, minExclusive, and
maxExclusive for types xsd:float and
xsd:double. (HYEXPRESS-3450)
SourcePro Users: HydraExpress 4.7.1 is certified with SourcePro Version 12.5.
Certain HTTPS transport properties could not be set after HttpsTransport had been initialized. (HYEXPRESS-3201)
Adds transport parameters delay-payload and
delay-payload-timeout to utilize delayed payload transport
using request header Expect: 100-continue.
(HYEXPRESS-3228)
A client can potentially wait unnecessarily after sending an
Expect: 100-continue header with the request.
(HYEXPRESS-3228)
Circular reference is generated when a schema type derives from another schema type with the same name, but in a different namespace. (HYEXPRESS-3210)
Fractional values are being validated improperly. (HYEXPRESS-3250)
SourcePro Users: HydraExpress 4.7.0 is certified with SourcePro Version 12.5.
ServiceIdentifier should be removed from the code base. (HYEXPRESS-2089)
RWSF:doEscape handler property does not work as
documented. (HYEXPRESS-2617)
Reconnect fails using OpenSSL and standalone server (HYEXPRESS-2719)
CPU utilization goes to 100% using OpenSSL and standalone server (HYEXPRESS-2720)
FD_SETSIZE limits the number of file descriptors
that select can access to 1024 (HYEXPRESS-2742)
Generated code may fail to compile because of names that conflict with C++ keywords. (HYEXPRESS-2747)
HydraExpress 4.6 is slower than LEIF 2.5 when marshalling (HYEXPRESS-2763)
Unmarshaling nillable element with minOccurs of
1 fails if before other element (HYEXPRESS-86)
Minimize serialization of xsi:type
(HYEXPRESS-89)
Code generated with stl accepts invalid values for boolean data type. (HYEXPRESS-121)
Improve error message returned on unmarshal of invalid XML (HYEXPRESS-143)
The xsi:type is incorrectly marshaled as the base
type for simpleType elements. (HYEXPRESS-209)
Do not include prefix for implicit namespace (HYEXPRESS-215)
XmlValidator fails to correctly validate some decimal numbers (HYEXPRESS-1059)
Nillable element in a choice is not unmarshaled correctly (HYEXPRESS-2608)
rwsfgen results in ERROR: null
(HYEXPRESS-2667)
For a group that contains a sequence with a choice, Hydra doesn't generate valid code. (HYEXPRESS-2668)
Multiple constraints generate duplicate code identifiers (HYEXPRESS-2694)
Using the -sourcepro option xsd:unique
generates code using std() on an std::string
assigned to an std::string. (HYEXPRESS-2695)
Incorrect code generation for uniqueness constraints within an
element maxOccurs = unbounded. (HYEXPRESS-2715)
XmlValidator fails to properly evaluate constraints
when data is non-ASCII. (HYEXPRESS-2974)
SourcePro Users: HydraExpress 4.6.0 is certified with SourcePro Version 11.0.
The SIGPIPE signal is now ignored when the HTTP
connector is used. This prevents a crash when data is written to a reset
socket. (HYEXPRESS-187)
Charset encoding in XmlReader is now more stable and efficient. (HYRUNTIME-1045)
The configured log directory will be created when the log file is opened, if it is not already present. (HYRUNTIME-1496)
The . character is now allowed in the path specified
for the LogRotatingFileWriter. (HYRUNTIME-1580)
All connector shutdown functions are now properly called when a problem occurs during Agent initialization and startup. (HYRUNTIME-1694)
The HTTP connector will now try to send all pending responses in the buffer before shutting down the connector. (HYRUNTIME-1778)
Dates and other text with dashes will now parse correctly when they appear inside XML comments. (HYRUNTIME-2365)
HTTP messages now have newlines \n parsed correctly.
(HYRUNTIME-2398)
HTTP messages now have NULLs \0 parsed correctly.
(HYRUNTIME-2665)
XmlUtils::convertCharset() is now faster at
converting large buffers. (HYRUNTIME-2733)
Logger::wouldLog() now returns correct value when a
LogSplitter is used. (HYRUNTIME-2751)
Chunked messages through AJP13 (Apache Connector) now work properly. (HYRUNTIME-2792)
The Agent will now correctly read all messages stored in its internal read buffers, even if the message size doesn't exceed the buffer. (HYRUNTIME-2830)
getContentLength() on a ServletRequest
will now return the actual content length (or "-1" if not
found). Calling getContentLength() on an
HttpServletReqeust will now return the value of the
"Content-Length" header (or "-1" if the header
is not present). (HYEXPRESS-1045)MessageAttachment::getUniqueId() will now return
correct uniqueId. (HYEXPRESS-73)
Exceptions thrown by webservices now create valid XML. (HYEXPRESS-210)
An entity reference (&,
>, etc.) in a SOAP message with a SOAP header will
now escape and unescape correctly. (HYEXPRESS-456)
Using document/wrapped style messaging now parses correctly. (HYEXPRESS-1029)
An entity reference (&,
>, etc.) in a WSDL/Schema will now parse correctly.
(HYEXPRESS-1031)
WSDL with embedded schema does not generate a sample data app. (HYEXPRESS-1082)
HydraExpress 4.6 is slower than LEIF 2.5 when marshalling (HYEXPRESS-2763)
Any elements under complex types, other elements, or named model groups will now have the parent's name prepended to the element name to create the appropriate class name. (HYEXPRESS-55)
Elements of simple types now have the correct
xsi:type attribute set when marshaled.
(HYEXPRESS-209)
Using a fixed xsd:attribute that is also
"use=required" will now still marshal out the fixed value.
(HYEXPRESS-213)
Unmarshaling XML where a required attribute is missing now results in an error. (HYEXPRESS-419)
Using isValid() on an unbounded
xsd:sequence of xsd:choices now returns the
correct value. (HYEXPRESS-923)
Generation of unmarshal for substitution group elements outputs bad 'if' statements. (HYEXPRESS-1056)
Two xsd:choices in the same
xsd:sequence will now generate compilable code from
rwsfgen. (HYEXPRESS-1120)
An xsd:choice where all of the elements are either
unbounded or optional will now result in the correct enum value being
set when no elements are present in the instance document (i.e. one of
the optional elements was "chosen" but not provided).
(HYEXPRESS-1121)
SourcePro Users: HydraExpress 4.3.1 is certified with SourcePro Edition 10.
"-1" in an HTTP message no longer
causes a system crash. (HYRUNTIME-2118)A sequence of multiple choices will now generate code that properly sets the choice enums for each choice element. (HYEXPRESS-1120)
A choice with an optional element and a vector will now generate code that properly leaves the choice enum as "unknown" when no element is present in the instance document (ie. the optional element was chosen and omitted). (HYRUNTIME-1121)
SourcePro Users: HydraExpress 4.3 is certified with SourcePro Edition 10.
SourcePro Users: HydraExpress 4.1.1 is certified with SourcePro Edition 10.
SourcePro Users: HydraExpress 4.2 is certified with SourcePro Edition 10.
-maxgentypes allows a limit to the number of
generated types included in a single library. This will resolve issues
when using extremely large schemas where the linker had trouble linking
too many symbols into one library. (Bug 4009)SourcePro Users: HydraExpress 4.1 is certified with SourcePro Edition 10.
Cleaned up the output from rwagent -v on Windows by
removing unneeded libraries from the distribution.
The server-transports.xml file in rwsfgen projects
is now correctly copied to the correct file in the deployment zone
RWSF_HOME/apps/servlet/<project>/transports.xml)`.
Rolling log filenames have been altered to prepend the timestamp.
This allows rolling log filenames and directories to have periods
. in them. (Bug 4970)
Fixed an issue when generating a project from an XSD with a default namespace set. (Bug 5149)
The correct port is now always added to the HTTP "host" header. (Bug 5150)
When a DLL fails to open, an error will be logged with the full error message returned by the operating system. (Bug 5403)
SourcePro Users: HydraExpress 4.0 is certified with SourcePro Edition 10.
The rwsfvars script no functions properly when
parenthesis are included in path. (Bug 4256)
The base Hydra Express product no longer has any JVM dependency. (Bug 4771)
The rwsfgen utility no longer contains the
hard-coded "conf" dir, so it can now be set via command line options.
(Bug 5309)
The rwagent -v command shouldn't have any more
"(unknown)" entries. (Bug 4403)
An & string in a wsdl element that has a
pattern will no longer cause a rwsfgen failure. (Bug
4927)
Multiple choices inside of a xsd:choice no longer
unmarshals incorrectly. (Bug 4988)
substitutionGroup including extension of abstract
base no longer fails during unmarshaling. (Bug 5064)
SourcePro Users: HydraExpress 3.5 is certified with SourcePro Edition 9, Update 1.
SourcePro Users: LEIF 2.5.1 is certified with SourcePro Edition 7. However, SourcePro Edition 8 has been included with Red Hat 4 and SLES 9.1 for binary compatibility reasons.
LEIF documentation: better coverage of security. (QA# 29275)
Default mode in LEIF::leifWriteFile is incorrect
(QA# 31210)
LEIF::CallInfo::getRequestTransportHeaderNames() doc
bug (QA# 31224)
RWCookie: setExpires() member function addition;
MaxAge description change (QA# 28216)
Multiple cookies are not set when the request is routed through bundled Apache HTTP server. (QA# 31004)
soapenc code error (QA# 31133)
HTTPS transport doesn't handle re-negotiation requests correctly (QA# 30968)
LEIF throws only one generic Exception instead of specific ones. (QA# 31118)
Add test for incorrect code generated for second generation complex type with simple content (QA# 30081)
If we have a completely empty abstract class, the dispatching code for subtypes isn't generated. (QA# 30690)
Bug in XMLReader class because we do not ignore the text
in a CDATA tag. (QA# 30720)
makefile bug when you have namespace prefix of "obj"
it causes makefile target errors (QA# 30920)
Support for redefine broken (from voice xml schema) (QA# 30981)
xmlbinding bugs found using FpML 4.1 and barclay's schemas (QA# 30996)
Escape sequence "\." in regular expression not
handled correctly. (QA# 31041)
Code not generated correctly with anonymous complex types in groups (QA# 31048)
Errors in CodeGen when top element name is same as filename in a default namespace. (QA# 31051)
Name conflict if there an element with a name choice
since leif generate an enumeration named choice for the
first choice element (QA# 31052)
Add full Regular Expression support to LEIF (closed as a duplicate of 31041) (QA# 31074)
marshaling a substitutionGroup within a choice of a
choice (VXML) (QA# 31104)
Comments with embedded newlines are not parsed correctly by XML-OL (QA# 31105)
XML-OL to have difficulty reading comments where a
/n follows a /r (QA# 31106)
isValid() finds valid file to be invalid for
optional attributes (QA# 31141)
Anonymous Complex Type mapped to a new name in project file does not generate (QA# 31232)
If we have a completely empty abstract class, the dispatching code for subtypes isn't generated. (QA# 30690)
Can't find tag error is triggered when there is only one derivation for an abstract class (QA# 30695)
Element with fixed value should not be altered at runtime (QA# 30871)
LEIF2.5 bug with complex nested constructs (QA# 31045)
Unbound sequence error (QA# 31077)
incorrect isValid() when using unbounded sequences
of choices (QA# 31081)
isValid() finds valid file to be invalid (not a bug
in 2.5) (QA# 31122)
isValid() code does not compile when fixed value and
simpleType (QA# 31183)
extension of a complex type causes generation to fail (QA# 31205)
SourcePro Users: LEIF 2.5.0 is certified with SourcePro Edition 7.
LEIF documentation: better coverage of security. (QA# 29275)
Command-line timeout provided in calls to connect(),
submit() and getReply() (QA# 29310)
Ability to place generated client, server and types code from
wsdl2cpp into different directories. (QA# 29812)
Fixed MSVC warnings (QA# 29852)
LEIF generated VC++ 6.0 projects do not compile (QA# 29998)
std::vector and RWTValOrderedVector
should be used as storage containers for arrays (QA# 30071)
"=" operator template has no return value in
IOU.cc (QA# 30196)
Need support for Base64 encoding/decoding (QA# 30305)
Wrong default namespace when parsing end tag (QA# 30310)
LEIF DateTime has wrong time zone offset sign (QA# 30312)
Thread stack size default is inadequate on HPUX (QA# 30420)
LEIF should initialize named objects in the order they appear in
objects.xml (QA# 30417)
Container processes objects.xml even for shutdown
(QA# 30419)
Fix for failure of reference resolver to replace referrent element tag name with referenced name (QA# 29715)
Temp strings defined multiply when message has multiple parts defined (QA# 29716)
Base64 encoding for Http Auth header, missing "="
padding (QA# 29778)
includeChildTypeAttributes option for web services
components (QA# 29853)
Getting redefinition error for RWWinsockInfo when
combining multiple proxies in a single library (QA# 29992)
xsd: qualification missing when generating
ArrayOfString (QA# 30005)
Using -sourcepro with soap Arrays of type decimal -
rw/tools/decport.h not included (QA# 30039)
Recursive SOAP arrays not supported (QA# 30089)
Generated documentation sometimes has a "+" where it should have a "&" (QA# 30121)
-noserver switch causes incorrect code to be
generated (QA# 30126)
SoapWorX -wrapped flag (QA# 30177)
Axis Style Wrapped bug with datatypes (QA# 30178)
namespace mapping incomplete -- generated code won't compile (QA# 30206)
Need to more prominently document the requirement to incorporate
the soaparray.cfg mapping in user-created config files (QA#
30208)
Should incorporate wsdl name in SxDatatype12d.lib
and SxDatatype12d.dll libraries (QA# 30209)
Generated code for Arrays do not compile (QA# 30228)
SOAP-ENCODED Arrays without a size specified results
in parse error (QA# 30294)
Need better support for escaping text in LEIF (QA# 30306)
Can't use HTTPS tunneling over an HTTP connection (QA# 30353)
Message listeners (or standalone server) should be multithreaded (QA# 30394)
dot not handled correctly in complex type names (QA# 30395)
setTransportProperty does not work in proxy class
(QA# 30414)
typedef'd simple type treated as complex type (QA# 30432)
Way to pass Init parameters for handlers not documented (QA# 30509)
Service imp's destroy() method not called at
container shutdown (QA# 30519)
SOAP request does not contain all namespaces (QA# 30589)
Incorrectly generating an unmarshalInner() call on a
complexElement with no child elements (QA# 29757)
simple content extensions not handled correctly (QA# 30040)
Generating multiple forward declarations for the same class (QA# 30060)
Generating incorrect code for nilable elements in our
marshalInner method (QA# 30066)
Not generating multiple arrays with same name in different namespaces (QA# 30069)
Mapping bool to true/false with config
file generates non-buildable code (QA# 30105)
Equality operator doesn't check attributes (QA# 30167)
Null pointer exception in "==" operator for
complexTypes with choices (QA# 30193)
No way to set mustExcapeText to true in the
LEIF::XmlWriter class (QA# 30195)
Namespace mapping not propagated correctly, causing compilation to fail (QA# 30207)
Large number of enumerations causes isValid method
to reach compiler limit (QA# 30226)
Validation of enumerations during unmarshaling (QA# 30337)
When using declaration use="required", the
"==" operator does not check for the attribute (QA#
30350)
isValid() does not check for mandatory attributes
(QA# 30354)
Fix for failure of relative paths for locating included/imported schemas (QA# 29427)
isValid() not working for derived types (QA#
30520)
XMLOL user guide section 9.6 example does not work (QA# 30850)
Failure to generate compile-able code for fixed value for an element (QA# 30859)
LEIF xml validation doesn't validate base classes (QA# 30902)
Incorrect documentation that XmlReader class can be constructed from a file stream (QA# 30911)
SourcePro Users: LEIF 2.2.0 is certified with SourcePro Edition 6.
LEIF now supports SOAP Array instances that do not have a size
indicated in the SOAP-ENC:arrayType attribute. (e.g.
SOAP-ENC:arrayType="xsd:int[]"). Note that LEIF already
supported SOAP Array definitions of this kind, just not instances. (QA#
30294)
LEIF now allows circular imports of wsdl files. (QA# 30201)
SOAP Array classes now capitalize the name of the array member, consistent with other generated schema classes. (QA# 30228)
'.' and other special characters are now handled
correctly when found in message names used by wsdl:fault
definitions. (QA# 30395)
The -outdir flag now works correctly with imported
wsdl files. (QA# 30431)
Compile time failures resulting from schema elements based on simple types now fixed. (QA# 30432)
Escaping and unescaping of special characters in message data is now handled consistently. (QA# 30306) (QA# 30435)
Add URL to CallInfo (QA# 30478)
Null pointer exception in "==" operator for
complexTypes with choices (QA# 30193)
Equality operator== not generated correctly when
vectors are involved (QA# 30167)
Need better support for escaping text (QA# 30306)
No way to set mustEscapeText to true in the
LEIF:XmlWriter class (QA# 30195)
SourcePro Users: LEIF 2.1.0 is certified with SourcePro Edition 6.
Support for stand-alone server. Using -standalone
option with wsdl2cpp a sample standalone server can be
generated and service built, and deployed independently from LEIF
server.
Handler API now allows for the aborting of message processing, which immediately aborts further message processing. In previous release this was not possible.
Transport handlers, which are invoked in both directions, are now invoked in reverse order in the opposite direction. This was not the case in previous release.
Recursive arrays are now supported.
Make sure XML Schema namespace qualification is present in the type attribute for SOAP array elements when the schema uses the default namespace rather than explicitly putting it in the SOAP array definition.
Allow for identical SOAP Array names to be declared in different namespaces.
New SOAP Array base implementation provides iterators and most other interface elements present in version 1.2.
Generated fault messages split into source and header files.
Make sure all appropriate SourcePro headers are included in SOAP
Arrays when -sourcepro is used for code
generation.
Fixed bug with multiple nillable elements of
complexType.
Fixed problem groups that contain an annotation element.
Fixed problem that generated multiple forward declarations for the same class.
Fixed problem with types with same name as built-in types.
Fixed problem with choice member numbering.
Fixed problem with adding typeinfos for existing C++
type.
Fixed problem with interaction between default namespace and unqualified elements.
Added feature for getting and setting nested members with single function call.
SourcePro Users: LEIF 2.0.0 is certified with SourcePro Edition 6.
Improved HTTP connector--now supports HTTP 1.1 as well as HTTP 1.0.
Fix for a shutdown problem, if a second instance of Bobcat is started while one is already running the first instance could not be shut down.
Fix for a hanging problem, which occurred in some cases when a socket connection was suddenly terminated.
Support for IBM WebSphere MQ.
Transports can now be loaded and selected dynamically at runtime on the client. Transports are configured with an XML configuration file.
The HTTPS transport can be configured at runtime. Generated clients no longer need to link with a particular HTTPS library.
Support for one-way message patterns.
Support for asynchronous operations by using a thread to wait for a response.
Support for chaining message handlers
We no longer generate a unique servlet for each service. Instead
we use a standard LEIF servlet. This servlet entry point is:
sxserverlib.createRWSOAPworXServlet. This also means that
the generated server code no longer has a dependency on the Bobcat
servlet container.
Support for controlling HTTP/HTTPS timeouts. The following timeouts can be specified: connect, submit, and reply.
Support for a basic logging system. Each logger is defined as a message handler.
Simpler service registration system. Services are now configured with an XML configuration file.
Remove the dependency on SourcePro when -stl is used.
Support for notification message patterns
Support for solicit-response message patterns
Created work around for compilers that don't allow unnamed temporaries as const ref arguments.
Fixed bug in test for list which caused infinite recursion in code generation.
Fixed problem with upcasing names already mapped by user.
Fixed problem with relative paths on import/include.
Fixed numerous validation issues and clarified support for simple type validation.
Fixed problem with setting defaults for elements represented with a vector.
Add support for sub-elements with
simpleContent.
Fixed various problems with member initialization.
Fixed timezone problem with date conversions using RWDate.
Added support for anyType to handle complex
content.
Added support for default values in complex types with simple content.
Added ability to not generate classes from top-level elements.
Improve support for CDATA sections.
SourcePro Users: LEIF 1.2.1 is certified with SourcePro Edition 5.
Fix for the problem of the worker thread pool not growing.
Fix for the server's sudden death caused by SIGPIPE
on Unix.
Fix for the failure to process requests larger than 8K.
Enhancement: Added acceptor threads for accepting new requests
the number of which is configurable in server.xml Bobcat
configuration file.
Enhancement: Added timeout configuration parameter for worker
threads in server.xml Bobcat configuration file.
Fix for a compile time failure when a schema specified a Soap Array within a complex type.
The pre-defined client for the DayOfWeek example now supports the
-a option in the same way as generated clients.
The include path for openssl libraries is now inserted in
makefiles whenever -ssl is specified.
The usage display for wsdl2cpp has been
corrected.
Created work around for compilers that don't allow unnamed temporaries as const ref arguments.
Fixed bug in test for list which caused infinite recursion in code generation.
Fixed problem with upcasing names already mapped by user.
Fixed problem with relative paths on import/include.
Fixed numerous validation issues and clarified support for simple type validation.
Fixed problem with setting defaults for elements represented with a vector.
Add support for sub-elements with
simpleContent.
SourcePro Users: LEIF 1.2.0 is certified with SourcePro Edition 5.
Fix for the problem of the worker thread pool not growing.
Fix for the server's sudden death caused by SIGPIPE
on Unix.
Fix for the failure to process requests larger than 8K.
Enhancement: Added acceptor threads for accepting new requests
the number of which is configurable in server.xml Bobcat
configuration file.
Enhancement: Added timeout configuration parameter for worker
threads in server.xml Bobcat configuration file.
New protocol independent architecture allows for the use of transports other than http. You may provide your own transport for use with SOAPworX generated clients and servers.
Support for accessing a single server implementation from multiple service ports
Support for SSL and HTTPS
Support for multi-dimensional arrays
Performance improvements
Improved handling of wsdl and schema imports
Support for SOAP-ENC built in types
Support for wsdl:faults (see the user's guide for
details)
Support for schema types that have more than one level of restriction originating with a builtin type.
Example:
<xsd:simpleType name='First'>
<xsd:restriction base='xsd:string' />
</xsd:simpleType>
<xsd:simpleType name='Second' >
<xsd:restriction base='First' />
</xsd:simpleType>
Allow use of rpc/encoded with parts that are defined using an element rather than a type attribute, even though this is technically not allowed by WSDL 1.1.
Clean up temporary files generated by xmlol when called from
wsdl2cpp.
Deploy generated servlet binaries to
RW_HOME/apps-bin for Windows or
RW_HOME/apps-lib for UNIX. This keeps generated binaries
separate from LEIF and SourcePro binaries.
Fix a code generation bug with numeric data type parameters when generating code for the stl (default) interface.
Fix problems with parameter order marshalling and unmarshalling.
Ensure that the encodingStyle attribute is present
SOAP messages when required.
Improved support for nillable.
Unmarshal signatures have been changed. There are now signatures for the base string type as well as for the mapped string type, if it exists.
Added support for non-ascii names.
Declspec macro has been added to generated
operator== so are no exported.
Fixed bug for elements in empty namespace.
Added better support for external marshalling.
Reworked import and include to guarantee single inclusion.
Fixed problem with generating validator method checkPattern.
Fixed inconsistency in use of target namespace for contained elements.
Fixed problem with sequence model groups containing optional elements.
Fixed problem with validation of choice elements.
Fixed bug that occurred when targets in makefile were incorrectly generated for top-level elements.
Fixed bug which occurred when there are multiple anonymous complex types that have parent elements with the same name and not all result in generated classes.
Fixed bug which occurred when import was failing if the
schemaLocation of the imported schema is the suffix of a
schema previously included or imported.
Fixed bug which occurred when restricting a
complexType not defined in a target namespace resulted in a
generated class that attempted to inherit from
::<classname>.
Fixed bug which occurred when restricting a type in another namespace (from an imported xsd) resulted in the wrong C++ type for the inheritance.
Nillable elements with an illegal value of empty content are now
treated as if xsi:nil were set to true.
Fix problems with code generation of classes from model groups within a top-level group.
Add ability to set names with config file that depends on namespace.
Changed value of xsi:type to be qualified name of
default name for class. This ensures that the prefix will be consistent
with the marshalled document.
SourcePro Users: LEIF 1.0.0 is certified with SourcePro Edition 4, Update 1.
SourcePro Users: LEIF's SourcePro binaries are built with an optimization turned ON for atomic operations. If, instead of using the SourcePro binaries provided with LEIF, you build the libraries for SourcePro Edition 4 update 1, then you must set to yes the RCB Advanced Question for turning on atomic handle body reference counting. If you fail to set atomic handle-body reference counting to yes, the binaries used by the LEIF server will be non-functional.
SourcePro Users on MSVC7: In addition, after installing
SourcePro Edition 4, Update 1, you must make a minor modification in the
header file rw/serial/StreamTraits.h. The following code
block can be found at the top of the StreamTraits.h
file:
#if defined (_MSC_VER) && (_MSC_VER >= 1300)
extern template class RWTCountingBody<RWMutexLock>;
#endif
which will need to be modified with this change:
#if defined (_MSC_VER) && (_MSC_VER >= 1300) && !defined(RW_POINTER_ATOMIC_HANDLE_BODY)
extern template class RWTCountingBody<RWMutexLock>;
#endif
This change is required to compile successfully with MSVC7 when atomic operations are enabled.
This version of HydraExpress supports a subset of the features defined by the XML Schema specification that is a W3C Recommendation, 2 May 2001. This specification can be found online at
http://www.w3c.org/TR/xmlschema-0/
This support for a static API is available only with HydraExpress
services (code generated services and servlets) via the interface
provided by the HydraExpress xmlbinding library.
The following XML Schema features are supported in this release:
Named and anonymous complex type definitions
Complex type definitions with all, sequence and choice content models
Complex type definitions with simple content
Complex type derivations by restriction and extension (some limitations)
Element and attribute declarations
Simple types and simple type restrictions (restrictions not validated)
Element declarations with occurrence constraints greater than 1
Element declarations for optional elements (occurrence constraint of 0)
Default values for attributes and elements
Attribute group declarations
Group declarations with non-recurring sequence content model
Element and attribute references
Nil values
Namespace qualification of top-level elements and type definitions
Namespace qualification of qualified attributes and local elements
Schema in multiple documents using the include and import features
Any type, any element, and any attribute
Customizable mapping for element, attribute and complex type names
Customizable C++ namespace mapping for selected XML namespace URIs
Flexible type mapping for all 44 built-in types
Command-line option to generate API's with a STL-based interface
Validation of simple type facets through
isValid()
Substitution groups
Union groups
Limited support for key/keyref
Limited support for complex schema types derived by restriction
Restricted types that have more restrictive facets, such as restricting the value set of a type
Restrictions which change the schema type, but do not result in a
change in the mapped C++ type, such as restricting an
xsd:string to an xsd:NCName
Named model groups
This version of HydraExpress does not support the following features defined by the XML Schema specification that is a W3C Recommendation, 2 May 2001. This specification can be found online at
http://www.w3c.org/TR/xmlschema-0/
Robust name conflict resolution
Mixed Content
Unique and unique functionality of
key/keyref
HydraExpress has limited support for complex schema types derived by restriction. Specifically, the following constructs are unsupported.
Prohibiting a previously optional type
Restricting maxOccurs from a value greater than one
or unbounded to one occurrence
Restrictions that change the C++ mapped type, such as restricting
from anyType
Limited support of any within a choice. Any is supported within choice as the only choice.
Validation of a subset of user defined facets on simple types.
Due to the product's design of representing various types with
appropriate C++ types, facets that rely on the string representation of
the data cannot be validated. For example, if a floating point number
had a pattern facet that required that numbers have two to four decimal
digits, HydraExpress cannot validate this facet since the conversion
loses this information. Unsupported facets include the pattern and
enumeration facets for all converted types since they require
comparisons with the string version of the data. Also unsupported are
the fractionDigits and totalDigits facets on float and
double instances, since this information is lost as
well.
Validation of the basic types directly. Type conversions implicitly validate the string being converted but for restrictions on strings only the user-defined facets are validated.
Full support for optional and nillable elements through the
generic interfaces. When setting members through set() and
object() the flag indicating the selection is not set. The
setXXX APIs in the DataObject class use these generic
methods and will thus not work correctly for optional or nillable
elements.
The use of the word "choice" in an XML schema may result in a naming conflict, since HydraExpress generates an enumeration named choice for the first choice element of the <choice> declaration.
A workaround is to map a schema's choice element to another name, such as AltChoice, using the mapping element of the HydraExpress project file. For more information on creating customized mappings, see "Creating Customized Mappings" in the HydraExpress XML Binding Development Guide.
© 2026 Perforce Software, Inc. All rights reserved.
Perforce and other identified trademarks are the property of Perforce Software, Inc., or one of its affiliates. Such trademarks are claimed and/or registered in the U.S. and other countries and regions. All third-party trademarks are the property of their respective holders. References to third-party trademarks do not imply endorsement or sponsorship of any products or services by the trademark holder. Contact Perforce Software, Inc., for further details.