csdnzlw
2016-02-25 08:38
采纳率: 37.9%
浏览 1.3k
已采纳

javaweb servlet访问另外一台机器

servlet访问另外一台机器,获得另外一台机器返回的一个值。
这方面没接触过,说下思路,有代码更好了。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qsjh898 2016-02-26 03:15
    已采纳

    假设你的Servlet是用来实现HTTP请求的,C为客户端,S1是你的servlet,S2是所谓的另一台机器中的Servlet。
    现在C向S1发起了一个HTTP请求1,而S1在处理这个HTTP请求1的时候,发现需要向S2发送HTTP请求2获取某些数据,因此它就向S2发送HTTP请求2。
    S2处理完HTTP请求2向S1返回结果,S1得到HTTP请求2的结果后,把结果数据包装在HTTP请求1的结果中,并向C返回结果。
    画成流程图就是下面这样。
    C————>S1--------->S2
    C<————S1<---------S2
    对于S1和S2来说,它们仍然是最简单的Servlet,接收并处理HTTP请求。只不过HTTP请求2是由HTTP请求1发起的。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 兜茄破 2016-02-25 09:05

    可以写Socket,也可以直接用JDK的RMI(远程方法调用)

    RMI调用例子如下:

     package com.dullchap.rmi.test;
    
    import java.rmi.Naming;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.server.UnicastRemoteObject;
    
    public class RMIServerTest  extends UnicastRemoteObject implements MyRemote{
    
        /**
         * 抛出异常的默认构造方法
         * @throws RemoteException
         */
        public RMIServerTest() throws RemoteException {   
            super();   
        } 
    
        /**
         * 远程调用处理,这里返回一个100的值
         */
        public int start() throws  RemoteException {
    
            return 100;
        }
    
        /**
         * 程序入口
         * @param args
         */
        public static void main(String[] args) {
    
            try {
                //在服务器端新建一个对象
                RMIServerTest rmiTest  =  new RMIServerTest();
    
                //注册1099端口
                LocateRegistry.createRegistry(1099);
    
                //将对象绑定到服务上
                Naming.rebind("myServer", rmiTest);
    
                System.out.println("myServer is ready.");
    
            } catch (Exception e) {
                System.out.println("myServer Server failed: " + e);
            }
    
        }
    }
    
    /**
     * 定义一个接口,这个接口在服务器端和客户端需要同时存在
     *
     */
    interface MyRemote  extends Remote {
    
        public int start() throws  RemoteException ;
    }
    
    
     package com.dullchap.rmi.test;
    
    import java.net.MalformedURLException;
    
    public class RMIClientTest {
    
        public static void main(String[] args) throws RemoteException, MalformedURLException, NotBoundException{
    
            //写上服务器端的IP和注册名
            String url="rmi://127.0.0.1/myServer";   
    
            //获取RMI对象
            MyRemote myRemote = (MyRemote)Naming.lookup(url);
    
            //执行RMI对象
            int result = myRemote.start();
    
            //打印结果
            System.out.println("从服务器返回的值是:"+result);
    
        }
    }
    
    

    如不明白,可百度RMI,可以找很多事例

    评论
    解决 无用
    打赏 举报
  • qsjh898 2016-02-25 12:09

    tomcat只不过是一个WEB容器,说白了也就是个JAVA程序。只要是能用JAVA实现的功能,基本上都可以放在TOMCAT上跑。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题