RMI程序正在远程计算机(RMI Server)上运行,我们通过Web应用程序(RMI客户端)调用这个程序。当RMI客户端调用RMI Server时,服务器实例化一个程序,结果通过简单的网络客户端代码发送回客户端。示例代码如下所示。
RMI服务器代码
try {
if(monitor == null) return;
monitor.stop();
SimpleClient sc=new SimpleClient(client,1131,"`file Monitor stopped");
//System.out.println("---aaaaa---");
sc.sendMsg();
System.out.println("Monitor stopped");
}catch(Exception ex){
ex.printStackTrace();
}RMI客户端代码
public static List plusOne003Test(String ipAddress, boolean isstopped) {
ArrayList alist = null;
try {
System.out.println("All Plus one....plusOne003Test");
Class testClass = Class.forName("PlusOneClient11");
System.out.println("class Name::::::>"+testClass.getName());
Method testMethod = testClass.getMethod("plusOne003Test",
new Class[] { String.class,boolean.class});
alist = (ArrayList) testMethod.invoke(testClass.newInstance(),ipAddress,isstopped);
//System.out.println("ALIST::::::>"+alist);
System.out.println("before create server");
SimpleServer t=new SimpleServer(1131);
t.start();
Thread.sleep(10000);
System.out.println("after create server");
System.out.println("test3:::>" + alist.size());
} catch (Exception ex) {
ex.printStackTrace();
}
return alist;
}接收来自RMI服务器的消息的网络代码
public class SimpleServer extends Thread{
private ServerSocket serverSocket;
public SimpleServer(int port) throws IOException {
try{
ServerSocketFactory ssf=ServerSocketFactory.getDefault();
serverSocket=ssf.createServerSocket(port);
}catch(BindException be){
be.printStackTrace();
}
}
public void run(){
while(true)
{
try
{
System.out.println("Waiting for client on port " +
serverSocket.getLocalPort() + "...");
Socket server = serverSocket.accept();
/*System.out.println("Just connected to "
+ server.getRemoteSocketAddress());*/
DataInputStream in =
new DataInputStream(server.getInputStream());
String rec=in.readUTF();
System.out.println("\n"+rec+"\n");
if(rec.contains("`")){
String rec1[]=rec.split("`");
**JOptionPane.showMessageDialog(null, rec1[0]+"\n"+rec1[1]);**
----------------------------------------------------------------
System.out.println("\n"+rec+"\n");
}
}catch(SocketTimeoutException s)
{
s.printStackTrace();
System.out.println("Socket timed out!");
break;
}catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
}代码JOptionPane.showMessageDialog(null,rec1+"\n"+rec11);消息需要显示在web应用程序警告消息中。
发布于 2015-07-29 08:12:35
在这种情况下,您需要理解服务器端(JSP、Servlet)和客户端(HTML、Javascript)代码之间的区别。JSP用于生成HTML代码,即它运行在服务器上,生成发送到浏览器的HTML,然后停止。因此,不可能将任何消息传递客户端的代码放入JSP中。
基本上,web技术是一种请求响应技术,通信是由客户端发起的.当然,也有实现服务器发起的通信的方法。我建议您看看HTML5 WebSockets (例如http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html),这应该是实现这种功能的最标准的方法。
https://stackoverflow.com/questions/31694465
复制相似问题