本文主要是介绍java Remote Method invocation(RMI)探讨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
主题 java Remote Method invocation(RMI)
java远程调用技术用通俗的语言描述即:通过调用Servlet并且Servlet中嵌入java的方法。
RMI必须用到的IO是DataInputStream\DataOutputStream\ByteArrayOutputStream 。
Service端
package com.rodjson.struts;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DataStreamEcho extends HttpServlet {
/**
* @author haibing.xiao
* @since jdk1.5
* <p> java Remote Method Invocation Student</p>
*/
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
String jsonStr ="<person><name>haibing.xiao</name></person>";
response.setContentType("application/octet-stream");
response.setContentLength(jsonStr.length());
ByteArrayOutputStream byteOut =new ByteArrayOutputStream();
DataOutputStream out =new DataOutputStream(byteOut);
out.writeUTF(jsonStr);
out.flush() ;
byte[] buf =byteOut.toByteArray();
response.setContentLength(buf.length);
ServletOutputStream servletOut =response.getOutputStream() ;
servletOut.write(buf);
servletOut.close();
}
}
测试类
package com.rodjson.struts;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
public class TestDataStreamEcho {
public static void main(String[] args) {
String urlStr="http://127.0.0.1:8080/struts/DataStreamEcho";
try {
java.net.URL url = new java.net.URL(urlStr);
java.net.URLConnection conn = url.openConnection();
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
DataInputStream dis =new DataInputStream(conn.getInputStream());
String jsonStr =dis.readUTF();
System.out.println("read:"+jsonStr);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这篇关于java Remote Method invocation(RMI)探讨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!