问题,先看部分代码如下
JavaSock jSock = new JavaSock();
CSock sock,sock1;
int eid = jSock.JavaSock_EpollCreate(ftp);
ParseMsgInface userInterface = getUmcToSp_Group(); sock = jSock.JavaSock_ServListen(eid, meip, meport, userInterface,
ftp);
if (sock == null) {
logger.info("无法创建本地" + meip + ":" + meport + "监听服务!");
//System.out.println("无法创建本地" + meip + ":" + meport + "监听服务!");
return;
}
jSock.JavaSock_close(sock); sock1 = jSock.JavaSock_ConnectTo(meip, toip, toport, ftp); if (sock1 == null) {
logger.info("无法连接到" + toip + ":" + toport);
//System.out.println("无法连接到" + toip + ":" + toport);
return;
}
其中jSock和 Csock对象下的方法都是c实现的,我无法控制。现在的问题关键是,这个是使用与web中调用。我想要的是,它不是随着服务启动而实例化。而是调用时实例化。 我希望第一次调用之后,sock会被创建,此后由于端口被占用,无法重复创建,如何在第一次调用创建之后,它会一直存在,无需在创建。从创建时开始直到web服务的生命结束。我任何时候都可以直接用.
JavaSock jSock = new JavaSock();
CSock sock,sock1;
int eid = jSock.JavaSock_EpollCreate(ftp);
ParseMsgInface userInterface = getUmcToSp_Group(); sock = jSock.JavaSock_ServListen(eid, meip, meport, userInterface,
ftp);
if (sock == null) {
logger.info("无法创建本地" + meip + ":" + meport + "监听服务!");
//System.out.println("无法创建本地" + meip + ":" + meport + "监听服务!");
return;
}
jSock.JavaSock_close(sock); sock1 = jSock.JavaSock_ConnectTo(meip, toip, toport, ftp); if (sock1 == null) {
logger.info("无法连接到" + toip + ":" + toport);
//System.out.println("无法连接到" + toip + ":" + toport);
return;
}
其中jSock和 Csock对象下的方法都是c实现的,我无法控制。现在的问题关键是,这个是使用与web中调用。我想要的是,它不是随着服务启动而实例化。而是调用时实例化。 我希望第一次调用之后,sock会被创建,此后由于端口被占用,无法重复创建,如何在第一次调用创建之后,它会一直存在,无需在创建。从创建时开始直到web服务的生命结束。我任何时候都可以直接用.
具体代码怎么弄啊,我弄了单态实例,好像没用。
private static JavaSock jSock = new JavaSock();
private SP2UMC_GroupOp_Ack opobj;
private boolean opready = false;
private static UmcToSp_Group umcspgroup = null;
private static CSock Csock_s =null;
private static CSock Csock_c=null;
//创建本地监听的单态实例
public static synchronized CSock getCSock_s(int eid, String meip, int meport,
ParseMsgInface userInterface, boolean prtlTcp) { if (Csock_s == null) {
Csock_s =jSock.JavaSock_ServListen(eid, meip, meport, userInterface,
prtlTcp);
}
return Csock_s;
} //UmcToSp_Group的单态实例
public static synchronized UmcToSp_Group getUmcToSp_Group() { if (umcspgroup == null) {
umcspgroup = new UmcToSp_Group() { };
}
return umcspgroup;
} public void umcgroup(boolean ftp, UMC2SP_GroupOp m_UMC2SP_GroupOp,
String meip, String toip, int meport, int toport) {
long start=System.currentTimeMillis();
UMCFarther m_UMCFarther = new UMCFarther();
/*
* boolean tp=ture; if(ftp!=null){ tp=ftp; }
*/
CSock sock_s,sock_c;
int eid = jSock.JavaSock_EpollCreate(ftp);
ParseMsgInface userInterface = getUmcToSp_Group();// sock_s = jSock.JavaSock_ServListen(eid, meip, meport, userInterface,
// ftp);
sock_s=getCSock_s(eid, meip, meport, userInterface,
ftp);
// if (sock == null) {
//
// System.out.println("无法创建本地" + meip + ":" + meport + "监听服务!");
// return;
// }
//jSock.JavaSock_close(sock);
long end1=System.currentTimeMillis();
System.out.println("到创建服务"+"####:"+(end1-start));
sock_c = jSock.JavaSock_ConnectTo(meip, toip, toport, ftp); if (sock_c == null) {
long end=System.currentTimeMillis();
System.out.println("无法连接到" + toip + ":" + toport+"####:"+(end-start));
return;
}
要打成jar包来用的,不能spring吧?
是我错了,在简单的java小project的测试类里,发挥不了单例的功能。在web里,这个就发挥作用了。