Java RPC server and web services.

Hi,

I am facing a problem with the EntireX Java RPC tester utility of EntireX workbench. I need to call a Java web service using Java RPC server. I’ve set the RPC server and tried to test the service using EntireX Java RPC tester utility.

The web service has four String arrays as part of request and I need to pass 3 values in each array to get the response. However the EntireX Java RPC server utility which pops up when the option Generate test and run is clicked is showing me only one text field for each array. In this case how can I enter multiple array elements in one text field?

I tried using / in between to seperate individual array elements but when I printed the array in SystemServer.java it is taking as abc/xyz together as one string and not as different array elements.

Would you please help me on this? I’ve copied the IDL generated from the WSDL below.

library ‘SYSTEM’ is
program ‘addewsj’ is
define data parameter
1 requestVO In
2 claimAmt (AV)
2 classCode (AV)
2 odometerReading (AV)
2 operationCodes
3 string (AV/V)
2 pfp (AV)
2 repairDate (AV)
2 subletAmt (AV)
2 subletCodes
3 string (AV/V)
2 vinCode (AV)
2 warrantyStartDate (AV)
2 partNoList
3 string (AV/V)
2 vspPartNos
3 string (AV/V)
1 validateInputClaimReturn Out
2 ClaimValidationResponseVO (AV)
2 reasonCode (AV)
end-define

Also in case I cannot pass multiple array elements from EntireX Java RPC tester, will the system work if array elements are properly send from mainframe to the RPC server?

Thanks in advance,
Gijish

http://servline24.softwareag.com/SecuredServices/document/java/exx733/javaWrapper/javaWrapper_using.htm#d0e652

Separate array elements with a semi-colon.

Hello Douglas,

Thanks for the reply. I’m now able to pass array elements.

But now I face a new problem. I was able to test the service from EntireX Java RPC server test utility but when I try doing a CALLNAT from mainframe I’m getting the following exception logged in the RPC server trace log.

java.lang.reflect.InvocationTargetException: Broker Error 0013 0202: rpcCall: length of received buffer too small, length = 3672
Broker Error 0013 0202: rpcCall: length of received buffer too small, length = 3672
at com.softwareag.entirex.aci.BrokerException.a(Unknown Source)
at com.softwareag.entirex.aci.Marshal.g(Unknown Source)
at com.softwareag.entirex.aci.Marshal.getDataA(Unknown Source)
at com.softwareag.entirex.aci.Marshal.getDataAV(Unknown Source)
at SystemStub$AddewsjRequestvoStub.get(SystemStub.java:71)
at SystemStub.addewsj(SystemStub.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.softwareag.entirex.aci.RPCServer.a(Unknown Source)
at com.softwareag.entirex.aci.RPCService.a(Unknown Source)
at com.softwareag.entirex.aci.RPCServer.a(Unknown Source)
at com.softwareag.entirex.aci.RPCServer.b(Unknown Source)
at com.softwareag.entirex.aci.o.run(Unknown Source)
RPC Server: Broker Error 0013 0202: rpcCall: length of received buffer too small, length = 3672

Would you please help me resolve this error?

Thanks,
Gijish

Hello Gijish,

this is typically a mismatch of the IDL and the PDA definition. Please check the definitions, make sure that AV is defined as a dynamic Alpha and Natural uses the same In and OUT directions.

Hi,

When I generated the IDL from WSDL of the web service, the type was specified as AV for all input and output parameters in the IDL. As per your suggestion, I changed the parameter types to match with that of the Input and output PDA params which I’m using while doing a CALLNAT from mainframe.

After doing this I overcame the previous error but now I face a new problem. When I do a CALLNAT from mainframe using the syntax

CALLNAT ‘ADDEWSJ’ USING #SEND-PARAMETER (AD=O) #RECEIVE-PARAMETER (AD=A)

I’m getting the following error message in the mainframe…

Nr.: 6971
Connection error on Client, reason 7 RPCJEWST/ETB1003.
.
.
Reason 1: No Transport layer.
2: Connection timed out.
3: Conversation timed out.
4: No space for working storage of Broker Stub.
Increase Natural thread or region size by 35K.
5: Data has been cut.
Increase MAXBUFF on Server side.
6: Node does not match any pattern.
7: Node not active.
8: Server not active.
.
Followed by Server/Node
.
.

But when I investigated the Java RPC server trace log, I could see that the request params for the Java web service has come from mainframe and the service was invoked properly. Even the response from web service is getting set in the IDL response parameter. I’m displaying a message after setting the response and even that is getting printed meaning there is no error getting logged in the RPC server trace log.

Why am i getting this error when I test the RPC server from mainframe? Also when I tested the RPC server setup using EntireX Java RPC server test utility, I’m getting proper response too.

Would you please help me on this???

Thanks a lot in advance,
Gijish

Hi,

This issue was solved. I was calling the RPC server using a subprogram which gave me that error. Later I tried using a simple program call and hardcoded the input parameters and tried the CALLNAT which got me the response from web service correctly.

Bottom line is it was an issue with the data exchanged between mainframe and RPC server.

Thanks & Regards,
Gijish