MIDRANGE dot COM Mailing List Archive



Home » JAVA400-L » September 2009

Connection reset from WAS to iSeries



fixed

We have an application (a set of web services) running on WAS on Linux. Program Call Wizard (PCML) is used to generate a set of Java classes to communicate with service programs on iSeries. The application is running on WAS continuously; however, the iSeries server is brought down each night for backup. As a result, each morning a connection reset exception is returned from the PCML program call when a 3rd party web application attempts to use the web services. After the web application calls the web service a few times, the connection is reestablished.

We would like to handle the failure inside the Java classes and retry the invoke method so that the 3rd party web application will not receive the error. What is the best practice to handle or avoid the situation? Any input to resolve the issue would be appreciated.

Below is the part of the stack trace extracted from the log:
[6/29/09 7:44:36:480 EDT] 00000035 SystemOut O 346187:44:36.480 5 ><BR>** Program Call Definition Error ** : The program alias, [query], caused error :
<BR>Exception received: '[java.net.SocketException] Connection reset'.
<BR>Potential causes :
<BR> 1) for 'Value is not set.' error. Please restart the EAR project or the server
<BR> to ensure that any changes made to the project are recognized by the server.
<BR> 2) for 'ObjectDoesNotExistException' error. Please make sure the host object defined
<BR> in the above program alias is correct and exists on the host.
<BR> 3) For all other errors, please check the setting of the reported field in
<BR> Program Call Definition Page.

[6/29/09 7:44:36:481 EDT] 00000035 SystemOut O WebIntRuntimeException occurred : com.ibm.iseries.webint.WebIntRuntimeException: <BR>** Program Call Definition Error ** : The program alias, [query], caused error :
<BR>Exception received: '[java.net.SocketException] Connection reset'.
<BR>Potential causes :
<BR> 1) for 'Value is not set.' error. Please restart the EAR project or the server
<BR> to ensure that any changes made to the project are recognized by the server.
<BR> 2) for 'ObjectDoesNotExistException' error. Please make sure the host object defined
<BR> in the above program alias is correct and exists on the host.
<BR> 3) For all other errors, please check the setting of the reported field in
<BR> Program Call Definition Page.

[6/29/09 7:44:36:481 EDT] 00000035 SystemOut O com.ibm.iseries.webint.WebIntRuntimeException: <BR>** Program Call Definition Error ** : The program alias, [query], caused error :
<BR>Exception received: '[java.net.SocketException] Connection reset'.
<BR>Potential causes :
<BR> 1) for 'Value is not set.' error. Please restart the EAR project or the server
<BR> to ensure that any changes made to the project are recognized by the server.
<BR> 2) for 'ObjectDoesNotExistException' error. Please make sure the host object defined
<BR> in the above program alias is correct and exists on the host.
<BR> 3) For all other errors, please check the setting of the reported field in
<BR> Program Call Definition Page.

[6/29/09 7:44:36:481 EDT] 00000035 SystemOut O at com.ibm.iseries.webint.WebIntProgramCall.mapException(WebIntProgramCall.java:831)
[6/29/09 7:44:36:481 EDT] 00000035 SystemOut O at com.ibm.iseries.webint.WebIntProgramCall.executeInternal(WebIntProgramCall.java:944)
[6/29/09 7:44:36:481 EDT] 00000035 SystemOut O at com.ibm.iseries.webint.WebIntProgramCall.execute(WebIntProgramCall.java:931)
[6/29/09 7:44:36:481 EDT] 00000035 SystemOut O at com.ibm.connector.as400.ProgramCallBean.invoke(ProgramCallBean.java:93)

Server and run environment information:

* WebSphere Platform 6.1 [ND 6.1.0.15 cf150808.12]

* Host Operating System is Linux, version 2.6.18-128.1.10.el5

* Java version = J2RE 1.5.0 IBM J9 2.3 Linux s390-31 j9vmxz3123-20071007 (JIT enabled)

* J9VM - 20071004_14218_bHdSMr

* JIT - 20070820_1846ifx1_r8

* GC - 200708_10, Java Compiler = j9jit23, Java VM name = IBM J9 VM

Development environment information:

* WDSC Version 7.0.0

* PCML Version 4.0

Sample code snippets generated by the wizard:
public GTResult gt (GTInput inputData) {
gtHandleInput(inputData);
gt.invoke();
GTResult result = process_GT_Output();
return result;
}

private GT gt;
private class GT extends ProgramCallBean {
private static final long serialVersionUID = -2997464562462614394L;

public GT ()
{
super();
}

public void setRuntimeConfigFile(String arg0)
{
super.setRuntimeConfigFile(arg0);
}

public void setPcmlName(String arg0)
{
super.setPcmlName(arg0);
}

public void setTraceEnabled(boolean arg0)
{
super.setTraceEnabled(arg0);
}

public void setValue(String arg0, boolean arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, byte arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, char arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, double arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, float arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, int arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, int arg1, Object arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, boolean arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, byte arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, char arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, double arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, float arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, int arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, long arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, Object arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, int[] arg1, short arg2)
{
super.setValue(arg0, arg1, arg2);
}

public void setValue(String arg0, long arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, Object arg1)
{
super.setValue(arg0, arg1);
}

public void setValue(String arg0, short arg1)
{
super.setValue(arg0, arg1);
}

public String getData(String arg0, int arg1, int[] arg2)
{
return super.getData(arg0, arg1, arg2);
}

public Object getValue(String arg0, int arg1)
{
return super.getValue(arg0, arg1);
}

public Object getValue(String arg0, int[] arg1)
{
return super.getValue(arg0, arg1);
}

public Object getValue(String arg0)
{
return super.getValue(arg0);
}

public int getIntValue(String arg0, int[] idx)
{
return super.getIntValue(arg0, idx);
}

public int getIntReturnValue(String arg0)
{
return super.getIntReturnValue(arg0);
}

public String getStringReturnValue()
{
return super.getStringReturnValue();
}

public void invoke ()
{
super.invoke();
}

public void setProgramName(String programName)
{
super.setProgramName(programName);
}

}






Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2014 by MIDRANGE dot COM and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available here. If you have questions about this, please contact