Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärtClient Programming Model  Dokument im Navigationsbaum lokalisieren

The following example describes a client programming model that you can use in Java EE applications (Servlets, EJB, etc):

 

       1.      Set a context for the Connection Factory which was configured during SAPJRA instance configuration (see previous section. Here the name could be MyConnFactory):

 

InitialContext initialcontext = new InitialContext();

ConnectionFactory connectionfactory =

(ConnectionFactory) initialcontext.lookup("java:comp/env/MyConnFactory");

 

       2.      Request a connection handle:

Connection connection = connectionfactory.getConnection();

 

       3.      Create a RecordFactoryobject to get a metadata description of the Remote Function Modules (RFM), that you will be calling:

RecordFactory recordFactory = connectionfactory.getRecordFactory();

 

       4.      Create Record objects containing all necessary information about theRFM.

MappedRecord input =recordFactory.createMappedRecord("NameOfYourRFM");

This input object can be filled with business data.

For example, if your input structure has a String field “MyBank”, you may set it by

input.put("MyBank",”BankOfWalldorf”);

 

       5.      Create an interaction object to make a call to an SAP system where you can send your business data and receive data back:

Interaction interaction = connection.createInteraction();

 

       6.       Then you execute the call itself using the method

           public Record execute(InteractionSpec interactionSpec, Record input)

Hinweis

The input parameter in the method execute(interactionSpec, input) should be of type  MappdRecord. The return object output in this method is also always of type MappedRecord.

       7.      For any synchronous calls  you have to pass null for interactionSpec, like

     MappedRecord output = (MappedRecord) interaction.execute(null, input);

 

       8.      For any transactional calls (tRFC calls) you need to create a  InteractionSpec object.

InteractionSpec interactionSpec =

          ((InteractionSpecFactory) connectionFatory).createInteractionSpec();

          And pass this object within the  method execute, like

     interaction.execute(interactionSpec, input);

Hinweis

There is no output evaluation, since the tRFC doesn’t return any output.

If the InteractionSpec doesn't contain a TID, the new TID is created.

On failure the caller should use the same InteractionSpec object to repeat the call.

If you use a new InteractionSpec instance in the next call, this will generate a new Transaction ID. This new call will then be considered as an independent call accordingly.

 

       9.      Add the description of this ConnectionFactory to your standard descriptor web.xml (if you access the factory from a servlet) or ejb-jar.xml (if you access the factory from EJB) to allow your application to access a specified ConnectionFactory:

<resource-ref>

        <res-ref-name> MyConnFactory </res-ref-name>

        <res-type>javax.resource.cci.ConnectionFactory</res-type>

        <res-auth>Application</res-auth>

        <res-sharing-scope>Shareable</res-sharing-scope>

</resource-ref>

In this case, MyConnFactory  represents ConnectionFactory configured during the SAPJRA configuration (see SAP JRA Configuration on the SAP J2EE Application Server).

 

Further Information

      Transactions for the Client Programming Model

      Security for the Client Programming Model

For more information on descriptors, please see:

      http://java.sun.com/dtd/web-app_2_3.dtd and

      http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd

 

 

 

Ende des Inhaltsbereichs