Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen Multi-Threading verwenden  Dokument im Navigationsbaum lokalisieren

Verwendung

Wenn Sie in Ihrem JCo Client mit Multi-Threading arbeiten wollen, benötigen Sie das Interface SessionReferenceProvider. Mit diesem Interface können Sie im JCo eine einfache Session-Referenz erzeugen.

 

Achtung

In einer Multi-Thread Umgebung muss die Aufteilung von Objekten (z.B. JCoTable-Objekten) zwischen verschiedenen Threads vorsichtig gehandhabt werden. Beachten Sie, dass vielfache, konkurrierende SAP-Aufrufe für dieselbe direkte Verbindung nicht möglich sind.

Beispiel

Syntax Multi-Threading

 

public static void step5MultiThreading() throws JCoException

    {

       

    }

   

    static class SessionManager implements SessionReferenceProvider

    {

        Hashtable<String, MySessionReference> availableSessions = new Hashtable<String, MySessionReference>();

        List<Thread> threadPool = new ArrayList<Thread>();

       

        public MySessionReference appSessionStarted()

        {

            Thread currThr = Thread.currentThread();

            String id = String.valueOf(currThr.getId());

            MySessionReference ref = availableSessions.get(id);

            if(ref == null)

            {

                ref = new MySessionReference(id);

                availableSessions.put(id, ref);

            }

            return ref;

        }

       

        public MySessionReference appSessionFinished()

        {

            Thread currThr = Thread.currentThread();

            String id = String.valueOf(currThr.getId());

            MySessionReference ref = availableSessions.remove(id);

            return ref;

        }

       

        public JCoSessionReference getCurrentSessionReference(String scopeType)

        {

            //ignore scopes

            return appSessionStarted();

        }

 

        public boolean isSessionAlive(String sessionId)

        {

            return availableSessions.containsKey(sessionId);

        }

 

        public void jcoServerSessionContinued(String sessionID) throws SessionException

        {

        }

 

        public void jcoServerSessionFinished(String sessionID)

        {

        }

 

        public void jcoServerSessionPassivated(String sessionID) throws SessionException

        {

        }

 

        public JCoSessionReference jcoServerSessionStarted() throws SessionException

        {

            return null;

        }

   

        static class MySessionReference implements JCoSessionReference

        {

            private String sessionId;

            MySessionReference(String id)

            {

                sessionId = id;

            }

           

            public void contextFinished()

            {

            }

 

            public void contextStarted()

            {

            }

 

            public String getID()

            {

                return sessionId;

            }

        }

    }

   

   

 

    public static void main(String[] args) throws JCoException

    {

        step1Connect();

        step2ConnectUsingPool();

        step3SimpleCall();

        step4WorkWithTable();

    }

}

 

Ende des Inhaltsbereichs