Skip navigation.
Downloads | Product Documentation | Support

WebLogic Tuxedo Connector Programmer's Guide

# Developing WebLogic Tuxedo Connector Service EJBs

The following sections provide information on how to create WebLogic Tuxedo Connector service EJBs:

- Basic Service EJB Operation
- Example Service EJB

# Basic Service EJB Operation

A service application uses Java and JATMI primitives to provide the following tasks:

- Access Service Information
- Buffer Messages
- Perform the Requested Service

## Access Service Information

Use the TPServiceInformation class to access service information sent by the Tuxedo client to run the service.

Table 3-1 JATMI TPServiceInformation Primitives

Buffer Type | Description
--- | ---
`getServiceData()` | Use to return the service data sent from the Tuxedo Client.
`getServiceFlags()` | Use to return the service flags sent from the Tuxedo Client.
`getServiceName()` | Use to return the service name that was called.

## Buffer Messages

Use the following TypedBuffers when sending and receiving messages between your application and Tuxedo:

Table 3-2 TypedBuffers

Buffer Type | Description
--- | ---
TypedString | Buffer type used when the data is an array of characters that terminates with the null character. Tuxedo equivalent: STRING.
TypedCArray | Buffer type used when the data is an undefined array of characters (byte array), any of which can be null. Tuxedo equivalent: CARRAY.
TypedFML | Buffer type used when the data is self-defined. Each data field carries its own identifier, an occurrence number, and possibly a length indicator. Tuxedo equivalent: FML.
TypedFML32 | Buffer type similar to TypeFML but allows for larger character fields, more fields, and larger overall buffers. Tuxedo equivalent: FML32.
TypedXML | Buffer type used when data is an XML based message. Tuxedo equivalent: XML for Tuxedo Release 7.1 and higher.
TypedView | Buffer type used when the application uses a Java structure to define the buffer structure using a view description file. Tuxedo equivalent: VIEW
TypedView32 | Buffer type similar to View but allows for larger character fields, more fields, and larger overall buffers. Tuxedo equivalent: VIEW32.
TypedXOctet | Buffer type used when the data is an undefined array of characters (byte array) any of which can be null. X_OCTET is identical in semantics to CARRAY. Tuxedo equivalent: X_OCTET.
TypedXCommon | Buffer type identical in semantics to View. Tuxedo equivalent: VIEW.
TypedXCType | Buffer type identical in semantics to View. Tuxedo equivalent: VIEW.

## Perform the Requested Service

Use Java code to express the logic required to provide your service.

### Return Client Messages for Request/Response Communication

Use the TuxedoReply class `setReplyBuffer()` method to respond to client requests.

### Use tpsend and tprecv for Conversational Communication

Note: For more information on Conversational Communication, see WebLogic Tuxedo Connector JATMI Conversations.

Use the following JATMI primitives when creating conversational servers that communicate with Tuxedo clients:

Table 3-3 WebLogic Tuxedo Connector Conversational Client Primitives

Name | Operation
--- | ---
tpconnect | Use to establish a connection to a Tuxedo conversational service.
tpdiscon | Use to abort a connection and generate a TPEV_DISCONIMM event when executed by the process controlling the conversation.
tprecv | Use to receive data across an open connection from a Tuxedo application.
tpsend | Use to send data across a open connection to a Tuxedo application.

# Example Service EJB

The following provides an example of the `TolowerBean.java` service EJB which receives a string argument, converts the string to all lower case, and returns the converted string to the client.

Listing 3-1 Example Service EJB

>     .
>     .
>     .

>     public Reply service(TPServiceInformation mydata) throws TPException {
>          TypedString data;
>          String lowered;
>          TypedString return_data;

>          log("service tolower called");

>          data = (TypedString) mydata.getServiceData();
>          lowered = data.toString().toLowerCase();
>          return_data = new TypedString(lowered);

>          mydata.setReplyBuffer(return_data);
>          return (mydata);
>     }
>     .
>     .
>     .