cancel
Showing results for 
Search instead for 
Did you mean: 

Servlet using JCO throws exceptions after approx 2 weeks of processing.

Former Member
0 Kudos

I have a servlet that accesses RFC's and returns the data as XML. The servlet only retrieves data, nothing is updated. It runs fine for about two weeks and processes upwards of 70,000 transactions and then starts throwing jco exceptions. No java runtime errors occur before the jco exceptions. Out of the blue at any time after about 14 days it throws it's first jco exception. After the first error, it's done for good. Dropping the connection pool doesn't help. The entire servlet and most times the application server needs reloaded. Any ideas what might cause this or how to debug the underlying cause?

Environment: Websphere 5.1 Application Server, Jco 2.1.6

The login properties are:

jco.client.user=myname

jco.client.passwd=mypass

jco.client.sysnr=00

jco.client.mshost=myhost

jco.client.group=mygroup

jco.client.client=010

jco.client.r3name=myR3name

First exception (all subsequent look the same)

2007-07-05 10:26:57,922 WARN SAPJcoCall : Creation of function template failed

com.sap.mw.jco.JCO$Exception: (104) RFC_ERROR_SYSTEM_FAILURE: RFC_ERROR_SYSTEM_FAILURE

at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeExecute(Native Method)

at com.sap.mw.jco.rfc.MiddlewareRFC$Client.execute(MiddlewareRFC.java(Inlined Compiled Code))

at com.sap.mw.jco.JCO$Client.execute(JCO.java(Compiled Code))

at com.sap.mw.jco.JCO$Client.execute(JCO.java(Compiled Code))

at com.sap.mw.jco.JCO$Repository.execute(JCO.java(Inlined Compiled Code))

at com.sap.mw.jco.JCO$Repository.queryFunctionInterface(JCO.java(Compiled Code))

at com.sap.mw.jco.JCO$Repository.queryFunctionInterface(JCO.java(Compiled Code))

at com.sap.mw.jco.JCO$Repository.getFunctionInterface(JCO.java(Compiled Code))

at com.sap.mw.jco.JCO$BasicRepository.getFunctionTemplate(JCO.java(Compiled Code))

at com.aspect.csstosap.v1.SAPJcoCall.createFunction(SAPJcoCall.java(Compiled Code))

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

did yoy consider using JRA instead of JCO? plain JCO and even its connection pooling isnt probably optimised to run inside an appserver runtime....

Former Member
0 Kudos

To be perfectly hones I don't know much about JRA. I did look in response to your reply and it looked like it bypassed RFC. My customer wants us to use their RFCs and Jco gives me this. Also JRA seemed to imply it was geared towards client applications. As far as I know JCO is what should be used for servlets. IBM has it mentioned in great detail in reference to websphere. Also in my mind the fact it has connection pooling sort of implies an application server. I can't think of many applications using java and connection pooling that would not be somehow web based. So again I really am not an expert in this regard so I'm open to more clarifications on why JRA would be a better approach to a servlet. Thanks for the response.

Former Member
0 Kudos

JRA is a recommended way of connecting from Java applications which run inside an application server environment. you can search more about JRA on help.sap.com and can see the advantages listed.

Answers (0)