예제
본 장에서는 JTmax 서버 사용 예제에 대해 기술한다.
1. 개요
다음은 예제 실행을 위한 환경에 대한 설명이다.
-
JTmax 서버가 listen할 주소 : 192.168.11.43:6555
-
Tmax 구성 : 192.168.11.41:11000
-
서비스 이름 : JTMAXSERVICE
-
서비스 설명 : 동일한 버퍼를 반환하는 서비스
2. Tmax 설정
Tmax의 환경 구성에 아래의 값을 추가한다.
*SERVICE
JTMAXSERVICE SVRNAME = javagw
*GATEWAY
javagw GWTYPE = JEUS_ASYNC, PORTNO = 11000,
RGWADDR = "192.168.11.43",
RGWPORTNO = 6555,
CLOPT = "-r ",
NODENAME = 노드명,
CPC = 1
3. 클라이언트 사용
package test.jtmax.jg;
import tmax.webt.WebtBuffer;
import tmax.webt.WebtConnection;
import tmax.webt.WebtRemoteService;
import tmax.webt.WebtTransaction;
public class WebtClient {
private String ip;
private int port;
private String svcName;
private WebtConnection conn;
public WebtClient(String ip, int port, String svcName) {
this.ip = ip;
this.port = port;
this.svcName = svcName;
conn = new WebtConnection(this.ip,this.port);
}
public void tpcall() {
WebtRemoteService service = new WebtRemoteService(svcName, conn);
WebtBuffer sndBuf = service.createStringBuffer();
sndBuf.setString("Echo String");
WebtBuffer rcvBuf = service.tpcall(sndBuf);
System.out.println(rcvBuf);
}
public void tpcalltran() {
WebtTransaction tr = new WebtTransaction(conn);
WebtRemoteService service = new WebtRemoteService(svcName, conn);
WebtBuffer sndBuf = service.createStringBuffer();
tr.begin();
sndBuf.setString("Echo String");
WebtBuffer rcvBuf = service.tpcall(sndBuf);
System.out.println(rcvBuf);
sndBuf.setString("Echo String2");
rcvBuf = service.tpcall(sndBuf);
System.out.println(rcvBuf);
tr.commit();
}
public static void main(String[] args) {
WebtClient client = new WebtClient("192.168.11.41",11000,"JTMAXSERVICE");
client.tpcall();
client.tpcalltran();
}
}
4. JTmax 서버 사용
package test.jtmax.jg;
import java.io.IOException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
import tmax.webt.WebtBuffer;
import com.tmax.nio.util.JTmaxEventHandler;
import com.tmax.nio.util.JTmaxResult;
import com.tmax.nio.util.JTmaxServer;
public class JTmaxSimpleServer implements JTmaxEventHandler{
public JTmaxSimpleServer()
{
}
public Xid[] recover() {
return null;
}
public JTmaxResult serviceExecute(Xid xid, String serviceName,
WebtBuffer rcvBuffer) {
System.out.println("service execute : "+xid+","+serviceName+","+rcvBuffer);
return new JTmaxResult(JTmaxResult.TPSUCCESS,0,rcvBuffer);
}
public JTmaxResult xaCommit(Xid xid, boolean isOnePhrase) {
System.out.println("xa commit : "+xid+","+isOnePhrase);
return new JTmaxResult(JTmaxResult.TPSUCCESS,XAResource.XA_OK,null);
}
public JTmaxResult xaPrepare(Xid xid) {
System.out.println("xa prepare : "+xid);
return new JTmaxResult(JTmaxResult.TPSUCCESS,XAResource.XA_OK,null);
}
public JTmaxResult xaRollback(Xid xid) {
System.out.println("xa rollback : "+xid);
return new JTmaxResult(JTmaxResult.TPSUCCESS,XAResource.XA_OK,null);
}
public static void main(String[] args) {
JTmaxSimpleServer server = new JTmaxSimpleServer();
server.startServer("jtmax",6555,10);
}
private void startServer(String name, int port, int maxConnection) {
JTmaxServer server = new JTmaxServer(name, port, maxConnection, this);
try {
server.startServer();
}
catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.in.read();
}
catch (IOException e) {
e.printStackTrace();
}
try {
server.stopServer();
}
catch (IOException e) {
e.printStackTrace();
}
}
}