Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Java-Programm zum Erstellen einer Server-Verbindung  Dokument im Navigationsbaum lokalisieren

Verwendung

Im nächsten Schritt können Sie ein Java-Programm schreiben, dass eine Server-Verbindung zu einem SAP Gateway erstellt.

Vorgehensweise

Um dies zu tun, müssen Sie:

1.      Den JCoServerFunctionHandler sowie das Coding implementieren, dass ausgeführt wird wenn der Aufruf eingeht.

2.      Eine Instanz für Ihre JCoServer Implementierung anlegen und mit start() starten.

Beispiel

Syntax Definition der Server Properties

 

import java.io.File;

import java.io.FileOutputStream;

import java.util.Hashtable;

import java.util.Map;

import java.util.Properties;

 

import com.sap.conn.jco.JCoException;

import com.sap.conn.jco.JCoFunction;

import com.sap.conn.jco.ext.DestinationDataProvider;

import com.sap.conn.jco.ext.ServerDataProvider;

import com.sap.conn.jco.server.DefaultServerHandlerFactory;

import com.sap.conn.jco.server.JCoServer;

import com.sap.conn.jco.server.JCoServerContext;

import com.sap.conn.jco.server.JCoServerErrorListener;

import com.sap.conn.jco.server.JCoServerExceptionListener;

import com.sap.conn.jco.server.JCoServerFactory;

import com.sap.conn.jco.server.JCoServerFunctionHandler;

import com.sap.conn.jco.server.JCoServerState;

import com.sap.conn.jco.server.JCoServerStateChangedListener;

import com.sap.conn.jco.server.JCoServerTIDHandler;

 

 

public class StepByStepServer

{

    static String SERVER_NAME1 = "SERVER";

    static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";

    static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";

    static

    {

        Properties connectProperties = new Properties();

        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "ls4065");

        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "85");

        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "800");

        connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "farber");

        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "laska");

        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");

        createDataFile(DESTINATION_NAME1, "jcoDestination", connectProperties);

 

        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");

        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,    "10");

        createDataFile(DESTINATION_NAME2, "jcoDestination", connectProperties);

       

        Properties servertProperties = new Properties();

        servertProperties.setProperty(ServerDataProvider.JCO_GWHOST, "binmain");

        servertProperties.setProperty(ServerDataProvider.JCO_GWSERV, "sapgw53");

        servertProperties.setProperty(ServerDataProvider.JCO_PROGID, "JCO_SERVER");

        servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST, "ABAP_AS_WITH_POOL");

        servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");

        createDataFile(SERVER_NAME1, "jcoServer", servertProperties);

    }

   

    static void createDataFile(String name, String suffix, Properties properties)

    {

        File cfg = new File(name+"."+suffix);

        if(!cfg.exists())

        {

            try

            {

                FileOutputStream fos = new FileOutputStream(cfg, false);

                properties.store(fos, "for tests only !");

                fos.close();

            }

            catch (Exception e)

            {

                throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);

            }

        }

    }

   

 

Syntax JCo Server

 

 

      static class StfcConnectionHandler implements JCoServerFunctionHandler

    {

        public void handleRequest(JCoServerContext serverCtx, JCoFunction function)

        {

            System.out.println("----------------------------------------------------------------");

            System.out.println("call              : " + function.getName());

            System.out.println("ConnectionId      : " + serverCtx.getConnectionID());

            System.out.println("SessionId         : " + serverCtx.getSessionID());

            System.out.println("TID               : " + serverCtx.getTID());

            System.out.println("repository name   : " + serverCtx.getRepository().getName());

            System.out.println("is in transaction : " + serverCtx.isInTransaction());

            System.out.println("is stateful       : " + serverCtx.isStatefulSession());

            System.out.println("----------------------------------------------------------------");

            System.out.println("gwhost: " + serverCtx.getServer().getGatewayHost());

            System.out.println("gwserv: " + serverCtx.getServer().getGatewayService());

            System.out.println("progid: " + serverCtx.getServer().getProgramID());

            System.out.println("----------------------------------------------------------------");

            System.out.println("attributes  : ");

            System.out.println(serverCtx.getConnectionAttributes().toString());

            System.out.println("----------------------------------------------------------------");

            System.out.println("req text: " + function.getImportParameterList().getString("REQUTEXT"));

            function.getExportParameterList().setValue("ECHOTEXT", function.getImportParameterList().getString("REQUTEXT"));

            function.getExportParameterList().setValue("RESPTEXT", "Hello World");

        }

    }

    static void step1SimpleServer()

    {

        JCoServer server;

        try

        {

            server = JCoServerFactory.getServer(SERVER_NAME1);

        }

        catch(JCoException ex)

        {

            throw new RuntimeException("Unable to create the server " + SERVER_NAME1 + ", because of " + ex.getMessage(), ex);

        }

       

        JCoServerFunctionHandler stfcConnectionHandler = new StfcConnectionHandler();

        DefaultServerHandlerFactory.FunctionHandlerFactory factory = new DefaultServerHandlerFactory.FunctionHandlerFactory();

        factory.registerHandler("STFC_CONNECTION", stfcConnectionHandler);

        server.setCallHandlerFactory(factory);

       

        server.start();

        System.out.println("The program can be stopped using <ctrl>+<c>");

    }

 

 

 

 

Ende des Inhaltsbereichs