Table of Contents
The Java WS Core is an implementation of the Web Services Resource Framework (WSRF) and the Web Service Notification (WSN) family of standards. It provides APIs and tools for building stateful Web services. The Java WS Core provides a Java-based container (web services hosting environment) and is the default container in a default GT installation. Commands can be used with any WSRF-based service/resource. The following GT 4.2.0 components are based on the Java WS Core [fixme verify]:
New Features in the GT 4.2 release
- Persistent HTTP/S connection support (client and server side)
- Support for SOAP with Attachments (DIME, MIME, and MTOM formats). See the SOAP Attachments section for details.
- Dynamic deployment support for the standalone container. See the Java WS Core Container Dynamic Deploy Design Document for more information.
- WS-Enumeration support. See the Java WS Core WS-Enumeration Design Document for more information.
- JBOSS 4.0.x support.
- The TargetedXPath query dialect implementation that enables simpler and more efficient querying of resource property documents.
Other Supported Features
- A standalone and embeddable container
- Tomcat 4.1, 5.0, and 5.5 support
- Basic API for resource persistence and recovery
- Persistent subscriptions support
- Automatic service and ResourceHome activation on startup
- Operation providers
Deprecated Features
- None
- Support for WS Addressing version 1.0
- Support for Web Services Resource Framework version 1.2
- Support for Web Services Notification version 1.3
A migration guide for porting services to the new specification is available here.
- The globus-validate-descriptors command line tool is
used to validate the Web Services Deployment Descriptor
(
.wsdd) files, JNDI configuration files (jndi-config.xml), and security descriptors for all services. - The globus-check-environment command line tool is used to display component version information and to validate JVM version.
- The globus-update-client-config command line tool is used to merge client-config.wsdd files from deployed modules into the global client-config.wsdd configuration file.
- The globus-reload-container, globus-remote-deploy-gar, and globus-remote-undeploy-gar command line tools (see the dynamic deployment feature for details).
- The ws-enumerate-start, ws-enumerate, and ws-enumerate-end command line tools (see the WS-Enumeration support feature for details).
- The globus-xpath-query command line tool for querying
the resource property document of a resource using the new
TargetedXPathquery dialect.
-t, --timeoutoption is used to configure the client-side timeout value.
- A new
-icommand line option was added toglobus-start-containerto force the container to bind to the specified network address. globus-start-containernow performs a JVM version check to ensure that at least Java 1.4 JVM is used to start the container.- The
OutOfMemoryErrorerror handling was improved in the standalone container. AllResourceHomecaches will now be automatically cleared onOutOfMemoryErrorerror. - SOAP requests containing attachments will now be handled correctly by the container.
- The globus-start-container-detached, and globus-stop-container-detached tools now support options for specifying alternative log and pid file locations.
- Adjusted the number of threads used by the container in standalone and embedded mode. By default the container in standalone mode will now have a minimum of 2 threads and a maximum of 20. The container in embedded mode will now have a minimum of 1 thread and maximum of 3 threads.
- globus-deploy-gar will NOT overwrite the existing GAR deployment by default now. The existing deployment must be undeployed first or the GAR must be deployed with -overwrite option.
- During GAR deployment the service configuration files such as
.wsddfiles,jndi-config.xmlfile, and security deployment descriptors will now be automatically validated. - Client-side type mapping will now be properly removed during GAR undeployment.
- Both GAR deployment and undeployment operations now explicitly check if the container is currently running. If so, the operation is aborted. The container must be off before deploying or undeploying GAR files.
- globus-deploy-gar and globus-undeploy-gar tools can now deploy or undeploy a GAR file directly from Apache Tomcat with the -tomcat option.
- The command line syntax of the globus-deploy-gar and globus-undeploy-gar tools has changed. The tools now expect the options first followed by the required arguments.
It is now easier to make local invocations. Axis'
MessageContextdoes not need to be associated with the current thread anymore and the stub does not need to be configured in any way to make local invocations.
- A new MessageContextHelper
API were added to help in associating an arbitrary
MessageContextobject with the current thread of execution. - A new EPRResourceContext
API was added to help obtaining
ResourceKey,ResourceHome, or the resource object associated with a given WS-Addressing endpoint. GLOBUS_TCP_SOURCE_PORT_RANGEenvironment property is now supported.- The test framework was extended to allow for execution of a specific test suite or a specific set of test cases within a test suite (Bug 3668).
- A new Version API were added to obtain Java WS Core version information programmatically.
- A new JNDIUtils.getInitialContext()
method was added to obtain the right JNDI registry. This is now the
preferred way of getting the
InitialContextas it will work correctly on any application server with other JNDI implementations present. - Added support for Sun Java SE 6 RC.
- Added init.d start/stop script for the standalone container. Please see the Configuring Java WS Core for details.
- A resource cache can now be configured with a size limit (in addition to a timeout).
- A persistent resource object (when used with
ResourceHomeImpl) can now have aprivateorprotectedno-argument constructor. - The factory parameter for simple Java
Bean resources declared in the
jndi-config.xmlfiles is now optional. By default, theorg.globus.wsrf.tools.jndi.BeanFactoryfactory class will be used if the factory resource parameter is not specified. - A launch script for the
myproxyJava command line tool will now be created on Windows. - Added error codes to all error messages generated by Java WS Core.
- The setTerminationTime() function can now throw a TerminationTimeRejectedException if the new termination time cannot be accepted by the service.
- Changed the timestamp format of the container log file to ISO
8601 complaint format. The new format has the following syntax:
YYYY-MM-DDThh:mm:ss,sss[+-]hh:mm. It uses local time with UTC time zone offset.
- CoG JGlobus (see the CoG JGlobus Release Notes for more details)
- Apache Xerces 2.7.1
- OpenSAML 1.1
- BouncyCastle 1.31
- Apache Log4j 1.2.15
- Apache Commons Logging 1.1
- Apache Commons CLI 2.0 (latest snapshot)
- Switched to JNDI Naming library from the Apache Directory Project.
- Post 1.4 version of Apache Axis. Please see Axis changes for details.
- Apache Commons Collection 3.2
- Apache Addressing Library has been imported into Globus CVS and a modified version of the library that support only WS Addressing 1.0 namespace has been added to the toolkit. The package names have been modified to avoid any conflicts and the toolkit does not ship with Apache Addressing library.
GT 4.2.0 release contains a newer version of Apache Axis. The following changes have been noted in Axis:
xsd:grouphandling has changed. A Java Bean will NOT be generated now for a xsd:group type. See AXIS-1525 for more details.- The ordering of the parameters of the constructors of the generated Java Beans has changed once again. It is recommended to avoid the full constructors of the generated Java Beans. Use individual setter functions to set the values of the Bean instead.
An error will now be raised by
BeanSerializerwhen serializing a null value that is not optional or non-nillable. This behavior can be disabled by settingBeanSerializer.errorOnNullWithNonNillableElementsystem property tofalse. Example:export GLOBUS_OPTIONS="-DBeanSerializer.errorOnNullWithNonNillableElement=false"WSDL2Javawill not generate Java Beans for certain array objects. The-woption must be passed toWSDL2Javato force it to generate the Java Beans for such types. This change is transparent to the users of the build scripts provided by Java WS Core.- MTOM attachments are now supported.
- Bug 3774: Missing dep in wsmds target?
- Bug 5591: Improve Java WS Core metrics reporting
- Bug 5656: Destruction of subscription resources relies on alive producer resources
- Bug 5826: ClassNotFoundException in recovery of subscription resources
- Bug 5539: globus-start-container lies about startup problem
- Bug 5322: GRAM/Derby db.lck file not cleaned up after WS container stopped
- Bug 5845: FaultHelper issue
- Bug 5991: Fault type cause has incorrect xsi:type
- Bug 5851: Deletion of directories of persisted subscription resources
- Bug 5789: lifetime of subscription resources
- Bug 5913: Improve error handling when 4.0.x client are used
- Bug 4859: globusrun-ws staging error after gt4 deployed to tomcat
- Bug 5505: Incomplete dependencies for globus_java_ws_core_test_unit
- Bug 3736: log4j timestamps are not ISO 8601 compatible
- Bug 4227: QueryResourceProperites xpath dialect doesn't handle namespaces
- Bug 4574: getting jars into lib/common
- Bug 4720: NotificationConsumerManager issues
- Bug 4842: Incorrect default ports used in ServiceURL
- Bug 5819: Removing subscription resources with SubscriptionRemovalHelper
- Bug 4936: WorkManager config broken
- Bug 5006: Configuration error does not print error message
- Bug 5071: Not able to build using Java 1.6
- Bug 5228: Update logging to use Best practice guidelines
- Bug 5352: Stub generation error with notification consumer wsdl
- Bug 5354: WS Addressing final version not supported in Apache WS Addressing library
- Bug 5358: Stub generation issue with use of restriction base
- Bug 5387: Persistent notification fails expecting default credentials
- Bug 5391: service "ping" feature
- Bug 5504: Security descriptor doc bugs
- Bug 5506: Circular Dependency between core and registry
- Bug 5560: CEDPS BP Logging update (GID to ID)
- Bug 5602: Authorization error is not CEDPs logging compliant
- Bug 5739: specupgrade related problem in ReflectionResource
- Bug 5941: class loading problem
- Bug 6093: globus_java_container_admin_tools_setup depends on JAVA_HOME
The following problems and limitations are known to exist for Java WS Core at the time of the 4.2.0 release:
WS-Notification support:
- Only the Simple topic dialect is supported (others can be added)
- Only flat topic spaces are supported (architecture does allow for more advanced structures)
- Actions on the precondition, selector and policy fields in a subscription are not supported
- When a resource is removed its subscriptions are not removed automatically
- Only XPath resource property queries are supported (others can be added)
- A resource might not get destroyed at the exact time as indicated by the scheduled termination time. A sweeper thread that removes expired resources runs periodically (every 1 minute by default) so an expired resource might not get removed until the next time the sweeper thread runs.
- Bug 2471: Message security signature verification issues
- Bug 2445: Same input and output messages in WSDL confuse Axis
- Bug 3113: Processing by the WSDLPreprocessor produces output different depending on the JVM
- Bug 3482: wsa:From is not set correctly when service calls another service
- Bug 3483: xsd:anyType not serialized correctly
- Bug 4432: SimpleTopic.notify(SOAPElement element) drop child elements
Java WS Core depends on the following GT components:
Java WS Core depends on the following 3rd party software:
Please see Java WS Core Technical Dependencies Details for details.
Java WS Core should work on any platform that supports J2SE 1.4.1 or higher.
Tested platforms for Java WS Core:
- Linux (Debian 3.1)
- Windows XP
- Solaris 9
Tested JVMs for Java WS Core:
- Sun JVM 1.4.2, 1.5.0, and 1.6.0 RC
- IBM JVM 1.4.1, and 1.4.2
- BEA JRockit JVM 1.5.0
JVM notes:
Tested containers for Java WS Core:
- Java WS Core container
- Tomcat 4.1.34
- Tomcat 5.0.30
- Tomcat 5.5.20
- JBoss 4.0.2
Protocol changes since GT version4.0.x:
API changes since GT version4.0.x:
- Java WS Core now requires Java 1.5 to compile and run. Java 5 provides new concurrency capabilities as well as Annotations and Generics (as well as some other features). For details on the new features, please see this overview. While it is possible that Java WS Core could run under Retroweaver or Retrotranslator, this has not been tested. Java 5 is available for most platforms from Sun http://java.sun.com/javase/downloads/index_jdk5.jsp
- The faultCause field in the BaseFaultType class is no longer an Object. Instead it has been changed to a BaseFaultTypeFaultCause. This class, in turn, contains an object that represents the actual fault cause called causeElement. This change was made in order to support interoperability with other groups.
Schema changes since GT version4.0.x:
- Please see the Protocol Changes section
Other changes since GT version4.0.x:
- Java 1.5 is required to use Java WS Core 4.2.
Associated standards for Java WS Core:
Please see Java WS Core for more information.
R
- ResourceHome
In Java WS Core, resources are managed and discovered via ResourceHome implementations. The ResourceHome implementations can also be responsible for creating new resources, performing operations on a set of resources at a time, etc. ResourceHomes are configured in JNDI and are associated with a particular web service.
W
- Web Services Notification (WSN)
The WS-Notification family of specifications define a pattern-based approach to allowing Web services to disseminate information to one another. This framework comprises mechanisms for basic notification (WS-Notification), topic-based notification (WS-Topics), and brokered notification (WS-BrokeredNotification). See the OASIS Web Services Notification (WSN) TC for details.
- Web Services Resource Framework (WSRF)
Web Services Resource Framework (WSRF) is a specification that extends web services for grid applications by giving them the ability to retain state information while at the same time retaining statelessness (using resources). The combination of a web service and a resource is referred to as a WS-Resource. WSRF is a collection of different specifications that manage WS-Resources.
This framework comprises mechanisms to describe views on the state (WS-ResourceProperties), to support management of the state through properties associated with the Web service (WS-ResourceLifetime), to describe how these mechanisms are extensible to groups of Web services (WS-ServiceGroup), and to deal with faults (WS-BaseFaults).
For more information, go to: http://www.globus.org/wsrf/ and OASIS Web Services Notification (WSRF) TC .