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
A service application uses Java and JATMI primitives to provide the following tasks:
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. | 
	
		| TypedMBString | Buffer type used when the data is a wide array of characters to support multibyte characters. Tuxedo equivalent: MBSTRING. | 
 
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);
} 
.
.
.