Appendix M. Appendix - Troubleshooting, hints and tips for client developers

M.1. How can I generate my own client-side stubs for OGSA-DAI services?
M.2. When using the client toolkit I get an error about an unconnected pipe
M.3. How are client toolkit activity methods chosen and why might they seem inconsistent
M.4. How can I display status information about an activity in my workflow via its client proxy?

Please also see Appendix L, Appendix - Troubleshooting, hints and tips for client users

M.1. How can I generate my own client-side stubs for OGSA-DAI services?

You can use Apache Axis WSDL2Java. This can be run as follows:

$ setenv.sh
$ java org.apache.axis.wsdl.WSDL2Java -W URL

Where URL is the URL of the OGSA-DAI service. Please note that the -W flag is vital. This ensures that any stubs conform to the document/literal rather than wrapped/literal encoding. Both Globus and ourselves recommend document/literal. Inter-operability problems can arise between clients using wrapped/literal and OGSA-DAI services otherwise.

For more information on WSDL2Java see http://ws.apache.org/axis/java/reference.html

M.2. When using the client toolkit I get an error about an unconnected pipe

If you get an unconnected pipe error when trying to submit a workflow created using the client toolkit this is likely because you have created your activity objects and connected their outputs but have not added one or more of the activities to the workflow object.

M.3. How are client toolkit activity methods chosen and why might they seem inconsistent

For example, getOutput or getDataOutput or getResultsOutput; connectInput or connectDataInput etc.

The method names are determined by the activity input and output names. Typically developers would use the client toolkit JavaDoc APIs to see which methods to use.

M.4. How can I display status information about an activity in my workflow via its client proxy?

After submitting the workflow to the server via a data request execution resource proxy and receiving a request status in return each activity proxy is populated with status and/or error information. You can display this using the following method:

public static void printActivityStatus(Activity activity)
{
    System.out.println("Activity: " + activity.getActivityName());
    System.out.println("  Status: " + activity.getStatus());
    if (activity.hasErrorMessages())
    {
        Message[] messages = activity.getErrorMessages();
        for (int i = 0; i < messages.length; i++)
        {
            System.out.println("  " + messages[i]);
        }
    }
}