How to close a model object connection for Adaptive RFC?

Hi,
I'm calling two update RFC one after another in a single WebDynpro program. I like to close the session/connection after calling the first RFC. I'm using twp separate JCo connection for calling these two RFCs. Still I find both the RFCs are called in the same session.
Is there any way to close the JCo session from the code?
Thanks ,
Dipankar

Hi Dipankar
If you want the framework to control the opening and closing of the connections , then use TASK_SCOPE when initializing the modelobjects ,in which case the connection will remain open, for the lifecycle of a single call.
The intialization should be as below
(CompanyCodeList is your model object)
CompanyCodeList compCode = (CompanyCodeList)WDModelFactory.getModelInstance(CompanyCodeList.class, WDModelScopeType.TASK_SCOPE);
Bapi_Companycode_Getlist_Input bapIn = (Bapi_Companycode_Getlist_Input) compCode.createModelObject(Bapi_Companycode_Getlist_Input.class);
wdContext.nodeBapi_Companycode_Getlist_Input().bind(new Bapi_Companycode_Getlist_Input());
Regards
Pran

Similar Messages

  • How to find out the destination of an "Adaptive RFC Model - DEPRECATED"

    Hi All,
    How to find out the destination of an "Adaptive RFC Model - DEPRECATED" of an running application
    and Where is the destination created in the server .
    I have got the code of the running project from NWDI .
    Thanks in Advance
    Regards
    Piyas Kumar

    Hi,
    I am not sure I fully understand the question, but as per the guide
    http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/50f7192d-2808-2d10-189b-df3fa5f71abf
    Excerpt from Page 7
    Caveat Confector!1
    ARFC1 destinations were created using the Web Dynpro Content Administrator tool. This tool is
    still available for compatibility reasons, but the destinations it creates are not used by ARFC2
    models!
    Instead, you should use the u201CDestinationsu201D tool found on the Configuration Management screen of
    the NetWeaver Administrator.
    Therefore I think if you look up the application in the WD content Admin, there you can find out what kind of JCO/RFC connections are belonging to it. You can find it on http://<host>:<port>/webdynpro/dispatcher/sap.com/tcwdtools/Explorer
    Browse your application here, and then select the JCO Connections tab on the right hand side.
    I hope this helps.
    Best Regards,
    Ervin

  • Metadata Cache Invalidation for Adaptive RFC Models

    Hi,
    I’m trying the tutorial of the document: Metadata Cache Invalidation for Adaptive RFC Models.
    I’ve downloaded and deployed the EAR for NW7.0 on my server, but when I try to list the JCO destinations I have the following error:
       java.lang.NoSuchFieldError: flush_cache
        at com.sap.invalidation.InvalidationView.onActionGetSLDJCOs(InvalidationView.java:215)
    When I try to invalidate a dictionary, I have the message:
    Cache for Dictionary com.unilog.product.search.model.types.SearchProductModel invalidated
    But the tooltip value is not updated in my application...
    Can anyone give me some tips to use this component?
    Thanks in advance.
    Regards,
    Claire

    hi friends
    u see  this weblogs&pdf,this is helpful for u
    /people/bertram.ganz/blog/2007/01/08/the-top-12-hottest-sap-notes-every-web-dynpro-java-developer-must-know
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f3f93ee7-0c01-0010-2593-d7c28b5377c2
    Regards'
    vino

  • How do I set miminum # of connections for pool with Oracle and Tomcat?

    Hi,
    I can't seem to find any attribute to initialize the number of connections for my connection pool. Here is my current context.xml file under my /App1 directory:
    <Context path="/App1" docBase="App1"
    debug="5" reloadable="true" crossContext="true">
    <Resource name="App1ConnectionPool" auth="Container"
    type="oracle.jdbc.pool.OracleDataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    factory="oracle.jdbc.pool.OracleDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1521:oddjob"
    user="app1" password="app1" />
    </Context>
    I've been googling and reading forums, but haven't found a way to establish the minimum number of connections. I've tried all sorts of parameters like InitialLimit, MinLimit, MinActive, etc, with no success.
    Here is some sample code that I am testing:
    package web;
    import oracle.jdbc.pool.OracleDataSource;
    import oracle.jdbc.OracleConnection;
    import javax.naming.*;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Properties;
    public class ConnectionPool {
    String message = "Not Connected";
    public void init() {
    OracleConnection conn = null;
    ResultSet rst = null;
    Statement stmt = null;
    try {
    Context initContext = new InitialContext();
    Context envContext = (Context) initContext.lookup("java:/comp/env");
    OracleDataSource ds = (OracleDataSource) envContext.lookup("App1ConnectionPool");
    message = "Here.";
         String user = ds.getUser();
    if (envContext == null)
    throw new Exception("Error: No Context");
    if (ds == null)
    throw new Exception("Error: No DataSource");
    if (ds != null) {
    message = "Trying to connect...";
    conn = (OracleConnection) ds.getConnection();
    Properties prop = new Properties();
    prop.put("PROXY_USER_NAME", "adavey/xxx");
    if (conn != null) {
    message = "Got Connection " + conn.toString() + ", ";
              conn.openProxySession(OracleConnection.PROXYTYPE_USER_NAME,prop);
    stmt = conn.createStatement();
    rst = stmt.executeQuery("SELECT username, server from v$session where username is not null");
    while (rst.next()) {
    message = "DS User: " + user + "; DB User: " + rst.getString(1) + "; Server: " + rst.getString(2);
    rst.close();
    rst = null;
    stmt.close();
    stmt = null;
    conn.close(); // Return to connection pool
    conn = null; // Make sure we don't close it twice
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    // Always make sure result sets and statements are closed,
    // and the connection is returned to the pool
    if (rst != null) {
    try {
    rst.close();
    } catch (SQLException e) {
    rst = null;
    if (stmt != null) {
    try {
    stmt.close();
    } catch (SQLException e) {
    stmt = null;
    if (conn != null) {
    try {
    conn.close();
    } catch (SQLException e) {
    conn = null;
    public String getMessage() {
    return message;
    I'm using a utility to repeatedly call a JSP page that uses this class and displays the message variable. This utility allows me to specify the number of concurrent web requests and an overall number of requests to try. While that is running, I look at V$SESSION in Oracle and occassionaly, I will see a brief entry for app1 or adavey depending on the timing of my query and how far along the code has processed in this example. So it seems that I am only using one connection at a time and not a true connection pool.
    Is it possible that I need to use the oci driver instead of the thin driver? I've looked at the javadoc for oci and the OCIConnectionPool has a setPoolConfig method to set initial, min and max connections. However, it appears that this can only be set via Java code and not as a parameter in my context.xml resource file. If I have to set it each time I get a database connection, it seems like it sort of defeats the purpose of having Tomcat maintain the connection pool for me and that I need to implement my own connection pool. I'm a newbie to this technology so I really don't want to go this route.
    Any advice on setting up a proper connection pool that works with Tomcat and Oracle proxy sessions would be greatly appreciated.
    Thanks,
    Alan

    Well I did some more experiments and I am able to at least create a connection pool within my example code:
    package web;
    import oracle.jdbc.pool.OracleDataSource;
    import oracle.jdbc.OracleConnection;
    import javax.naming.*;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Properties;
    public class ConnectionPool {
    String message = "Not Connected";
    public void init() {
    OracleConnection conn = null;
    ResultSet rst = null;
    Statement stmt = null;
    try {
    Context initContext = new InitialContext();
    Context envContext = (Context) initContext.lookup("java:/comp/env");
    OracleDataSource ds = (OracleDataSource) envContext.lookup("App1ConnectionPool");
    message = "Here.";
         String user = ds.getUser();
    if (envContext == null)
    throw new Exception("Error: No Context");
    if (ds == null)
    throw new Exception("Error: No DataSource");
    if (ds != null) {
    message = "Trying to connect...";
    boolean cache_enabled = ds.getConnectionCachingEnabled();
    if (!cache_enabled){
    ds.setConnectionCachingEnabled(true);
    Properties cacheProps = new Properties();
    cacheProps.put("InitialLimit","5");
         cacheProps.put("MinLimit","5");
    cacheProps.put("MaxLimit","10");
    ds.setConnectionCacheProperties(cacheProps);
              conn = (OracleConnection) ds.getConnection();
    Properties prop = new Properties();
    prop.put("PROXY_USER_NAME", "adavey/xyz");
    if (conn != null) {
    message = "Got Connection " + conn.toString() + ", ";
              conn.openProxySession(OracleConnection.PROXYTYPE_USER_NAME,prop);
    stmt = conn.createStatement();
    //rst = stmt.executeQuery("SELECT 'Success obtaining connection' FROM DUAL");
    rst = stmt.executeQuery("SELECT user, SYS_CONTEXT ('USERENV', 'SESSION_USER') from dual");
    while (rst.next()) {
    message = "DS User: " + user + "; DB User: " + rst.getString(1) + "; sys_context: " + rst.getString(2);
    message += "; Was cache enabled?: " + cache_enabled;
    rst.close();
    rst = null;
    stmt.close();
    stmt = null;
    conn.close(OracleConnection.PROXY_SESSION); // Return to connection pool
    conn = null; // Make sure we don't close it twice
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    // Always make sure result sets and statements are closed,
    // and the connection is returned to the pool
    if (rst != null) {
    try {
    rst.close();
    } catch (SQLException e) {
    rst = null;
    if (stmt != null) {
    try {
    stmt.close();
    } catch (SQLException e) {
    stmt = null;
    if (conn != null) {
    try {
    conn.close();
    } catch (SQLException e) {
    conn = null;
    public String getMessage() {
    return message;
    In my context.xml file, I tried to specify the same Connection Cache Properties as attributes, but no luck:
    <Context path="/App1" docBase="App1"
    debug="5" reloadable="true" crossContext="true">
    <Resource name="App1ConnectionPool" auth="Container"
    type="oracle.jdbc.pool.OracleDataSource"
    driverClassName="oracle.jdbc.OracleDriver"
    factory="oracle.jdbc.pool.OracleDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1521:oddjob"
    user="app1" password="app1"
    ConnectionCachingEnabled="1" MinLimit="5" MaxLimit="20"/>
    </Context>
    These attributes seemed to have no effect:
    ConnectionCachingEnabled="1" ; also tried "true"
    MinLimit="5"
    MaxLimit="20"
    So basically if I could find some way to get these attributes set within the context.xml file instead of my code, I would be a happy developer :-)
    Oh well, it's almost Miller time here on the east coast. Maybe a few beers will help me find the solution I'm looking for.

  • How to close the Sound object

    I'm using Flash CS3, running code in ActionScript 3.
    I use the Loader class to load a child SWF file, which then
    takes over the entire area on my website that is reserved for
    Flash. If the user decides to stop watching the SWF file before it
    is completed, he hits the "close" button within the child SWF,
    ultimately causing the Loader.unload() method to be executed. So
    far, so good, only the sound from the remaining portion of the SWF
    file keeps playing. According to the Flash Docs for the
    Loader.unload() method:
    "As a best practice, before you unload a child SWF file, you
    should explicitly close any streams in the child SWF file's
    objects, such as LocalConnection, NetConnection, NetStream, and
    Sound objects. Otherwise, audio in the child SWF file might
    continue to play, even though the child SWF file was unloaded."
    It then gives an example that assumes you already have access
    to the Sound object, so closing the Sound object is done by:
    mySound.close();
    The only problem is that I have no idea how to access the
    Sound object when I use the Loader.load() method. Where is this
    beast? I can't seem to find anything in the documentation that
    tells me how to find the Sound object after calling Loader.load().
    As a temporary fix, I modified the target SWF file so that when the
    "close" button is hit, it calls the "stop()" function; however,
    this only stops the sound, it does not close the associated Sound
    object, and I presume it continues to lurk around in memory with
    nothing useful to do. (When the user hits the "close" button in the
    child SWF file, it creates a "bubbling" event so that the Loader
    class can call the Loader.unload() method on it.)
    I've attached code for your reference.
    Any help is deeply appreciated!
    -Dan

    Ack! Looks like I hijacked this thread, sorry.
    I'm doing almost exactly the same thing the OP is doing...
    Loader class to load an external SWF (which is a video file FLV).
    If the user hits the "close" button on the video, the video goes
    away as it should but the audio continues.
    I understand that I need to close any NetConnection and
    NetStream objects in addition to unloading the movie. What I don't
    understand is how to do that. I'm sure that it's a syntax thing I'm
    just not getting right. I would just really like a more detailed
    explanation of stopping NetConnections and NetStreams (but an
    explanation for the not-so-actionscript-experienced LOL).
    Thanks.

  • How to create a Generic Object Services for a standard tcode.

    Hi,
    We have a requirement where we are depreciating the assets (standard transaction ABAA) using a custom BDC program. We need to maintain a history (called audit trail) for the particular asset that has been depreciated using this program. For this audit train we have been asked to use "Generic Object Services" in transaction code ABAA.
    Unfortunately, Generic object services are not available in this transaction code. Can you please suggest me how to create "Generic Object Services" for a particular standard transaction code. Also, we have show the details of custom workflow that follows the approval process in order to depreciate the asset. how to show this workflow details using Generic Services. This is a very critical issue, any help will be very help ful.
    Please let me know should you require more information on this topic.
    Thanks,
    Ashish

    Instead of copyg the std fm to z, do the following,
    1. Go to se37 open FM VIEW_KURGV in display mode.
    2. Click on the spiral icon on the top.
    3. Then in menu go edit->enhancment options -> show implicit enhancement
    4. """""""""""""""""""""" kind of lines will appear in the cde, just rt click on the line at the place u want to insert the code and select
         enhancement implementation create.
    5. Give apropriate name for thi , it will inset a n place to write your code.
    This is an std sap methodology and is supported in upgradde also.

  • How  to create and test HTTP connection for proxy

    HI
    Can anybody help me by providing step by step guide for how to create a HTTP connection for inbound abap proxy?
    How i will get sure that connection is working properly?
    Thanks
    Debraj

    Hi Debraj,
       You should be able to do that in SM59 of the XI Box.
    Create the connection under "HTTP Connections to R/3 System".
    Provide the Target Host IP Address.Service Number and Path Prefix.
    Select the logon procedure as SAP Standard.
    SSL Inactive.
    Provide Logon details.
    Regards,
    Ravi

  • How do I keep an object shown for the rest of the project in its position?

    This sounds like a question for Lilybiri. I have a object that I want shown for the rest of the project ...
    On this slide, the object I want shown (big black rectangle) for the rest of the project is in the right position in the timeline and it covers the master background as it should. As you see, the only things (correctly) covering it are the blue video and the click to continue button.  In run time, however, it's a different story  -- the widget is suddenly visible over the object as well as the background from the master slide (but not the main master.)
    Can anyone help me out?

    The stacking order is not working for objects timed for the rest of the project. You have only two choices:
    if you don't check the option 'always on top' it will be always at the bottom
    if you check that option, it will always be on top.
    Lilybiri

  • Changing the default logical system names for adaptive RFC models

    Hello,
    When I create an Adaptive RFC model the dialog that asks me to specify the model name, package, source folder, etc. has default values in the "Default logical system name for model instances" and "... RFC metadata".
    I know I can type in another name there but I'd like to change the default name to something that fits our naming conventions. Can I change that? If so, can someone tell me where?
    Thanks in advance!
    David.

    Suresh,
    Thank you for your response. However, that is not what I was looking for. Sorry if my post was not clear.
    I knew that I could change it AFTER the import. I also know that I can type in something else besides the default DURING the import.
    What I am asking is if there is a way to change some configuration setting so that the 'default' that comes up in the drop down DURING the import is something different than what comes 'out-of-the-box' with NWDS.
    Hope that clears up what I'm looking for.
    David.
    Message was edited by:
            David Z. Pantich

  • Dynamic JCo Connection with Adaptive RFC Model 2

    Hi gurus,
    I'm trying to dinamically change a model data connector inside my web dynpro. I'm using an Adaptive RFC Model 2 to communicate with the R/3 backend. I've found that is possible to change the connector modifiyng the code inside the web dynpro. In detail I've found this example:
    IWDDynamicRFCModel model1 = (IWDDynamicRFCModel) WDModelFactory.getModelInstance(Model1.class);
    I put this code into wdDoInit method but I get the following error:
    "<comp_name>.wdDoInit failed to create or init instance of model 'model_name' in scope NO_SCOPE with instanceId 'null'"
    Furthermore I've used the deprecated Adaptive RFC Model and when I instantiate a model, ModelName m=new ModelName(), I see that the methods m.setJcoClient(client) and m.setSystemName(systemName) are visible, while when I try to do the same with Adaptive RFC Model 2, with my model m, the methods before there aren't.
    So this is my question: is it possible to change data connector dinamically with Adaptive RFC Model 2?
    Thanks a lot

    Dear Lukinho,
    You may try this ;
    try {
    IWDJCOClientConnection clientCon =  WDSystemLandscape.getJCOClientConnection("<name of the JCO connection>");
    String clientName      = clientCon.getClientName();
    String lang          = clientCon.getLanguage();
    String passowrd          = clientCon.getPassword();
    String sysID          = clientCon.getSystemIdentifier();
    String user          = clientCon.getUser();
    //etc...
    } catch (WDSystemLandscapeException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    I got this code from the thread   [Multiple Client Logon in JCO   |Re: Multiple Client Logon in JCO;
    Also have a look at this thread
    [JCo Destination   |Re: JCo Destination;
    Hope it helps!!
    Warm Regards
    Upendra Agrawal

  • Why SLD for Adaptive RFC Model?

    Hi,
    Is it necessary to configure the settings in SLD in order to run an adaptive RFC Model or does one have alternatives?
    Because, while defining an adaptive RFC Model in NW-Dev-Studio, one does explicitly enter the SAP Log on information.
    Regards
    Meesum

    Hi,
    SLD is required to run the RFC application.
    At design time there is no dependency on SLD and we are not going to specify SLD details during the model import.
    Runtime will pickup the connection info from ContentAdminstrator where we will point to SLD.
    Regards, VIP

  • JUnit for Adaptive RFC

    Hi all,
    I want to provide junit tests for our adaptive rfc models. However the simple approach to it doesn't work, as the model needs some backend information to execute (namely JCo connections, which are maintained on J2EE, not within NWDS).
    Do you know how to execute aRFC model directly in NWDS within the JUnit test, without WD controllers, and without J2EE?
    Is that possible at all?
    Thanks, Tom

    Hi.
    Some insight to the WDTypeNotFound Exception
    The error only occured because I wasn't connected properly to the SAP system via JCO. I verified this by taking a different FM available in a live system (where loadbalancing is used). Because the metadata JCO was properly configured to the MSG server (not the workaround I mentioned above), the exception did not occur.
    So the only question that remains is how to connect to the msg.server of a development machine where load balancing isn't set up. the port should be 36XX, where XX = system number, but what about the GROUP? At least for me the default "PUBLIC" didn't work. SID??
    Cheers,
    faB

  • How do I use my ethernet connection for printing on my LAN and use my Wifi on a different router and ISP to connect to the internet?

    I'm in a small office, and I have to use my ethernet connection to connect to the networked copier to be able to print, but connection to which I hooked my Time Capsule is literally 20x faster when connecting to the internet.
    How can I tell the computer to use the ethernet connection to print, while everything else should go through wifi?
    I have been manually going back and forth changing the order in Network Preferences between ethernet and Wifi, but I'm know there must be an easier way.  Thanks for your help!

    A packet going to Apple is not local. It is going to 17.149.160.49  -- So it is sent to the topmost working connection to be Routed and sent to the Internet.
    A packet going to a local computer or other device that is on the same subnet (has an IP address very close to the topmost IP Address of your computer) gets sent out that port as well, but is sent directly to that computer on the local subnet, since no Routing [changing of Addresses} is needed.
    A packet going to a local computer or Printer or Network Attached Storage device that is not on the topmost subnet, but is on a secondary subnet such as the second network connection would be sent directly to that computer, since no Routing is needed.
    I do not understand why two Routers have the same IP Address if they are not cross-connected. That makes everything very difficult when it should be simple.

  • How to know that remote object connection with server has not disconnected?

    Hi,
    In my application want to check weather connnection with
    remote object has disconnected or not. I have not found any
    property with remoteobject to verify this. Weather it is possible
    with remote object or if not then how it could be done with
    channel. I have checked connected property of channel but i could
    not find out how it works.
    Is there any solution for this, if any one know please
    reply...
    Thanks..

    Did you ever get resolved. I am having the sames issues
    Regards,
    Wally
    http://www.level10solutions.com

  • How do I remove "Allow all connections" for Pando in my firewall settings?

    In System Information under Firewall Settings - Applications, I see the following: com.pando.pando: Allow all connections. However, when I go to System Preferences and look at the firewall options, this is not listed, nor can I find any trace of Pando anywhere else on my computer. Is this hidden somewhere, and how can I get rid of it?

    pirihi,
    open Safari’s Preferences, and select its Privacy tab. For the “Block cookies and other website data” set of radio buttons, select “Never”.

Maybe you are looking for

  • Image processing with imaq vision with 2 webcams on the same computer

    Hi, I'm currently trying to set up 2 usb webcams (logitech quickcam for notebooks pro). I want to be able to have them both run simultaneously and do some image processing with the images that I get from both cameras with labview and imaq vision. As

  • Help! DVI to VGA Adapter freeze mein Mac

    Hallo, ich have yesterday bought a DVI to VGA Adapter. I connect my Macbookpro 15 to my PC Monitor a NOKIA 446Xpro Multigraph. Everything looks fine, but when everytime my Mac goes to sleep mode and back to activ again it said no Signal and my Mac Fr

  • Topics with Two Columns, and ?s about Margins

    I've been searching all over and can't quite get the answers I need.  I have a robohelp project which will solely be for written documentation.  Some of the topics within this project I would like two have two columns, the left column will just have

  • Faces context not found

    hi, Created a sample application with struts-faces integration.i am providing the <welcome-file-list> tag entry in the web.xml.Now when i try to hit the deployed application, i get error "Cannot find FacesContext".I guess i am not supposed to provide

  • Creating Insert Method for a binary tree

    I have code for a binary tree http://sourcepost.sytes.net/sourceview.aspx?source_id=5046 I'm trying to create an insert method that will accept an element and insert it into my binary tree. The main purpose of this is to test my traversal functions,