Table of Contents
- 1. Introduction
- 2. Command-line tools
- 3. Graphical user interfaces
- 4. Troubleshooting
- 4.1. Running clients from any directory
- 4.2. Program fails with "
Failed to acquire notification consumer home instance from registry
" error - 4.3.
Container warning: "
The WS-Addressing 'To' request header is missing
" - 4.4.
java.io.IOException: Token length X > 33554432
- 4.5. The standalone container appears to hang
- 4.6.
org.globus.wsrf.InvalidResourceKeyException: Argument key is null / Resource key is missing
- 4.7. General troubleshooting information
- 5. Miscellaneous information
- 6. Usage statistics collection by the Globus Alliance
Please see the Java WS Core Command Reference.
A client launched directly through the java
executable might fail if ran from a directory other then the GLOBUS_LOCATION
(It usually happens if the client receives notifications). To ensure that a client can be started from any directory pass a GLOBUS_LOCATION
system property on the java
command line set to the appropriate GLOBUS_LOCATION
directory. Also, make sure to put the GLOBUS_LOCATION
directory as the very first entry in the classpath used for the application.
For example on Unix/Linux:
$ java -DGLOBUS_LOCATION=$GLOBUS_LOCATION -classpath $GLOBUS_LOCATION:mylib.jar foo.MyClass
or on Windows:
> java -DGLOBUS_LOCATION=%GLOBUS_LOCATION% -classpath %GLOBUS_LOCATION%;mylib.jar foo.MyClass
Please see Section 4.1, “Running clients from any directory” if a client fails with "Failed to acquire notification consumer home instance from registry. Caused by javax.naming.NameNotFoundException: Name services is not bound in this Context
" error.
This warning is logged by the container if the request did not contain the necessary WS-Addressing headers. The client either did not attempt to send those headers at all or is somehow misconfigured (for example, the client used an incorrect configuration file). If you using a Java client and launching it directly using the java
executable take a look at Section 4.1, “Running clients from any directory”.
If you see the "java.io.IOException: Token length X > Y
" error in the container log it usually means you are trying to connect to HTTPS server using HTTP. For example, the service address specifies 8443
as a port number and http
as the protocol name. In general, 8443
port number should be used with the https
protocol, and 8080
port number should be used with the http
protocol.
If the standalone container appears to hang, for example the list of deployed services is not shown after a while or all requests to the container time out, please see the Debugging hanged Java process section for information on how to diagnose this problem.
The "org.globus.wsrf.InvalidResourceKeyException: Argument key is null
" (or "org.globus.wsrf.InvalidResourceKeyException: Resource key is missing
") error usually indicates that a resource key was not passed with the request or that an invalid resource key was passed with the request (that is, the element QName of the resource key did not match what the service expected).
Make sure that the EPR used to invoke the service contains the appropriate resource key. If you are using some command-line tool make sure to specify the resource key using the -k
option or pass a complete EPR from a file using the -e
option.
In general, if you want to investigate a problem on your own please see the
Debugging and Logging
section for details on how to turn on debugging. Also, please note that most of the command line clients have a -debug
option that will display more detailed error messages, including the error stack traces.
Also, searching the mailing lists such as
[email protected] or
[email protected] (before posting a message) can also be very fruitful.
Finally, if you think you have found a bug please report it in our Bugzilla system. Please include
as much as detail about the problem as possible.
In GT 4.0.0 to 4.0.3 on Unix/Linux machines the shell scripts generated for the various Java command line tools specified the entropy generator for the JVM in an incorrect way. That caused the JVM to fallback to a slower method of obtaining the entropy and resulted in slower startup of these programs.
The fix for this issue is very simple and can be applied to any existing GT 4.0.x installation. To apply the fix first download update.xml Ant script, and ensure your GLOBUS_LOCATION
environment property is properly set. Than execute (from any directory):
ant -f update.xml
After the fix is applied the startup time of the command line clients can improve by up to 60%. For more information please see Bug 4721.
Sometimes it might be necessary to run a Java program directly using the java
executable. There are two recommended ways of doing so (the GLOBUS_LOCATION
environment variable must first be set in both cases):
![]() | Important |
---|---|
If you are not using any of these two methods please take a look at Section 4.1, “Running clients from any directory”. |
The globus-devel-env
script can be used to set the proper CLASSPATH
environment variable.
To set the CLASSPATH
on Windows execute:
> %GLOBUS_LOCATION%\etc\globus-devel-env.bat
On Unix/Linux machines execute (for bash/sh):
$ . $GLOBUS_LOCATION/etc/globus-devel-env.sh
or (for csh/tcsh):
$ source $GLOBUS_LOCATION/etc/globus-devel-env.csh
Once the globus-devel-env
is executed successfully run the Java program, for example:
On Windows:
> java -DGLOBUS_LOCATION=%GLOBUS_LOCATION% foo.MyClass
On Unix/Linux:
$ java -DGLOBUS_LOCATION=$GLOBUS_LOCATION foo.MyClass
Note:
Passing -DGLOBUS_LOCATION
is not necessary but will enable the client to execute from any directory.
Sometimes the above method might fail if the CLASSPATH
environment variable is too long for the OS to handle. With the bootstrap method, a bootstrap code is executed first which sets the classpath programmatically and then invokes the specified Java program.
To invoke a Java program on Windows through bootstrap execute:
> java -cp %GLOBUS_LOCATION%\lib\bootstrap.jar -DGLOBUS_LOCATION=%GLOBUS_LOCATION% \ org.globus.bootstrap.Bootstrap foo.MyClass
On Unix/Linux machines execute:
$ java -cp $GLOBUS_LOCATION/lib/bootstrap.jar -DGLOBUS_LOCATION=$GLOBUS_LOCATION \ org.globus.bootstrap.Bootstrap foo.MyClass
The following usage statistics are sent by Java WS Core by default in a UDP packet (in addition to the Java WS Core component code, packet version, timestamp, and the source IP address):
On container startup:
- container id - random number
- container type - standalone, servlet, or unknown
- event type - container startup
- list of services - service names only
On container shutdown:
- container id - random number
- container type - standalone, servlet, or unknown
- event type - container shutdown
- list of activated services - service names only (4.0.3+)
- container uptime (4.0.3+)
If you wish to disable this feature, please see the Java WS Core System Administrator's Guide section on Usage Statistics Configuration for instructions.
Also, please see our policy statement on the collection of usage statistics.