cancel
Showing results for 
Search instead for 
Did you mean: 

Connection pooling in RFC adapter..

Former Member
0 Kudos

Hi folks

I have a requirement to use connection pooling in RFC adapter.I understand we can use JCO.Client class parameters in the advanced tab of RFC adapter..Does that mean I can use <b>JCO.addClientPool()</b> function.??? (I guess not,as it is not a method of Client class!!)

In the documentation, I dont find any specific parameters(variables defined in <b>JCO.Client</b> class, all that i find are only <b>getProperty, setProperty</b> methods without any information on possible Keys/Values which can be used)..

Is there anyway i can extend the functionality of RFC adapter to pool the connections from XI.This is most urgent and need ur help...

Regards

Sriram V.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Sriram,

The RFC Adapter uses connection pooling by default. You just need to set the Maximum Connections parameter in your RFC Receiver Communication Channel. That will set the maximum pool size and connection pooling will be used for the RFC communication between XI and R/3.

Once you've set this, you can check the settings in the Adapter Monitor for your RFC Communication Channel. It will show an entry like the following:

Client data: {jco.client.lang=EN, jco.client.snc_mode=0, jco.client.client=220, jco.client.passwd=******, jco.webas.ignore_jdsr_error=1, jco.client.user=ABCDE, jco.client.sysnr=20, jco.client.ashost=host123}

Repository data: {jco.client.lang=EN, jco.client.snc_mode=0, jco.client.client=220, jco.client.passwd=******, jco.webas.ignore_jdsr_error=1, jco.client.user=abcde, jco.client.sysnr=20, jco.client.ashost=host123}

Current pool size: 0, max pool size : 5

Note: I've set the maximum connections to 5 in my communication channel so notice the max pool size gets set to 5.

You can set jco.client parameters in the advanced tab but I don't think that's what you want to do. If you need to, just include the parameter name and the value in the advanced tab. Here are the available parameters from the JCO documentation:

jco.client.client SAP client

jco.client.user Logon user

jco.client.alias_user Alias user name

jco.client.passwd Logon password

jco.client.lang Logon language

jco.client.sysnr SAP system number

jco.client.ashost SAP application server

jco.client.mshost SAP message server

jco.client.gwhost Gateway host

jco.client.gwserv Gateway service

jco.client.r3name R/3 name

jco.client.group Group of SAP application servers

jco.client.tpname Program ID of external server program

jco.client.tphost Host of external server program

jco.client.type Type of remote host 2 = R/2, 3 = R/3, E = External

jco.client.trace Enable/disable RFC trace (0 or 1)

jco.client.codepage Initial codepage in SAP notation

jco.client.abap_debug Enable ABAP debugging 0 or 1

jco.client.use_sapgui Use remote SAP graphical user interface (0/1/2)

jco.client.getsso2 Get/Don't get a SSO ticket after logon (1 or 0)

jco.client.mysapsso2 Use the specified SAP Cookie Version 2 as logon ticket

jco.client.x509cert Use the specified X509 certificate as logon ticket

jco.client.lcheck Enable/Disable logon check at open time, 1 (enable) or 0 (disable)

jco.client.grt_data Additional data for GUI

jco.client.use_guihost Host to which to redirect the remote GUI

jco.client.use_guiserv Service to which to redirect of the remote GUI

jco.client.use_guiprogid Program ID of the server which starts the remote GUI

jco.client.snc_mode Secure network connection (SNC) mode, 0 (off) or 1 (on)

jco.client.snc_partnername SNC partner, e.g. p:CN=R3, O=XYZ-INC, C=EN

jco.client.snc_qop SNC level of security, 1 to 9

jco.client.snc_myname SNC name. Overrides default SNC partner

jco.client.snc_lib Path to library which provides SNC service

jco.client.dest R/2 destination

jco.client.saplogon_id String defined for SAPLOGON on 32-bit Windows

jco.client.extiddata Data for external authentication (PAS)

jco.client.extidtype Type of external authentication (PAS)

jco.client.idle_timeout Idle timeout (in seconds) for the connection after which it will be closed by R/3.

jco.client.dsr Enable/Disable dsr support (0 or 1)

Thanks,

Jesse

Former Member
0 Kudos

Hi Sriram,

Within the RFC Adapter there is the possiblity to specify the max connections in the area "RFC Client Parameters" of the adapter configuration. I guess specifying 5 here, results in JCO Client Pool of size 5 being opened. So it would be possible to process 5 messages in parallel. Please be aware that the documentation does not list it, so it is only my personal conclusion.

To get information on possible properties for JCO.Client class, get yourself the JavaDoc on JCO. The parameters for a client are described in the documentation of method JCO.getClient.

Best regards

Christine

Best regards

Christine

Former Member
0 Kudos

Christina

SAP help says that RFC adapter connections are stateless..and one per LUW, so I guess there is no way to set the connection pool externally as an adapter setting.

How the adapter handles the connections internally is probably something we would need the developer to state in the forum which I doubt we would get to have..

Anyways thanks for the information..

Former Member
0 Kudos

Siriom,

what do you mean with "set the connection pool externally"? Did you want to specificly set the pool e.g. with the name etc? I think that allowing only to configure the size of the pool (and i'm sure internally RFC adapter works with a pool) is correct. You should not "mess" with the internals of the adapter, e.g. don't reuse a pool in other programs etc. If you need a connection to R/3 and don't want to put credentials in let's say a java programm on your J2EE Engine, you can use a service of the J2EE Engine to get a connection. So just out of curiosity, why would you like to interfere directly with the connection pool of the RFC adapter?

Best regards

Christine

Former Member
0 Kudos

Hi Sriram,

See if this can help you. Snnipet from RFC FAQ's.

A RfcAdapter sender channel registers itself with this Program ID as a RFC-Server at the SAP Gateway. The sending system uses the same Program ID to identify the RFC-Server at the SAP Gateway. If the sending system is a SAP system, this Program ID has to be maintained in the RFC destination (transaction SM59).

During the sending system sends some RFC calls, the SAP Gateway will search its registration list for the Program ID supplied by the sending system. If there are more than one RFC-Server registered with the same Program ID, it will automaticaly schedule the RFC calles to each of the RFC-Servers using the round robin approach. This is done to distribute the load over all RFC-Servers equally.

To identify a XI RfcAdapter sender channel within the SAP Gateway it is important that its Program ID is unique within this Gateway. So try to avoid using common phrases as Program ID like 'rfcadapter' or 'rfcToXmb'.

To check which Program IDs are registered at the SAP Gateway the gateway-monitor can be used via transaction SMGW. Select Goto -> Logged on Clients. Registered RFC-Servers have a System-Type of 'REGISTER_TP'. The Program ID of the registered RFC-Servrer can be found in column 'TP name'. Unfortunately the list within SMGW only shows the truncated version of the Program ID (column 'TP name'). To get the full name, the details of an entry have to be selected. As an alternative the report RSGETALL_REG_SERVERS can be executed in transaction SE38. The output of this report will show the full names of the Program ID in column 'Registered PROGID'. This functionality is also available in the function module GWY_READ_CONNECTED_SYSTEMS which can be executed in transaction SE37.

Note that if the RFC sender channel is configured to use more than one connection to the SAP Gateway, there will be one registration at the SAP Gateway for each connection. If the RfcAdapter runs on a J2EE cluster with more than one server node, the number of registrations at the SAP Gateway is the number of connections configured in the RFC sender channel multiplied by the number of cluster nodes on which the RfcAdapter runs.

Regards,

Satish