Burlap中hessian协议研究(四)协议的”生命周期“

服务方法在用户请求调用处理用户的信息

    publicvoid service(ServletRequest request, ServletResponse response)

        throws IOException, ServletException

    {

        HttpServletRequest req = (HttpServletRequest)request;

        HttpServletResponse res = (HttpServletResponse)response;

        由此处代码可以知道客户端请求必须使用post方式,否则报错500,显示必须使用post方式发送

        if(!req.getMethod().equals("POST"))

        {

            res.setStatus(500, "Burlap Requires POST");

            PrintWriter out = res.getWriter();

            res.setContentType("text/html");

            out.println("<h1>Burlap Requires POST</h1>");

            return;

        }

        使用线程锁用于处理多个用户的操作

synchronized(_service)

        {

            创建远程客户端访问的骨架

            if(_skeleton == null)

                _skeleton = new BurlapSkeleton(_service);

            String serviceId = req.getPathInfo();

            String objectId = request.getParameter("ejbid");

            设置服务的处理对象的方法

            if(_serviceinstanceof Service)

                ((Service)_service).setRequestObject(request, serviceId, objectId);

            java.io.InputStream is = request.getInputStream();

            java.io.OutputStream os = response.getOutputStream();

            将接受到的请求信息和响应信息转换

            BurlapInput in = new BurlapInput(is);

            BurlapOutput out = new BurlapOutput(os);

            try

            {

                  调用响应的骨架的方法

                _skeleton.invoke(in, out);

            }

            catch(Throwable e)

            {

                thrownew ServletException(e);

            }

        }

    }

 

    private Class _serviceClass;

    private Object _service;

    private BurlapSkeleton _skeleton;

    privateboolean_isService;

}

 下面提供关于Burlap服务类的源代码

 此类定义的信息类似一个Burlap的”生命周期“!!!!!!!

 关于此处的"生命周期"纯属笔人个人看法?有什么不妥之处请不惜赐教??谢谢!

服务代理工厂类

publicclass BurlapProxyFactory     implements ObjectFactory

备注此类打开远程连接URLConnection使用将用户名和密码一起使用base64加密发送到服务端。

 

远程模型类BurlapRemote类必须知道URL type

 

服务类:此类类似HttpServlet中接口类Servlet

package com.caucho.services.server;

 

import javax.servlet.*;

 服务类接口的

publicinterface Service

{

   

     在Servlet启动时初始化一次

    publicabstractvoid init(ServletConfig servletconfig)

        throws ServletException;

   在客户端每一次请求时调用此方法处理服务信息

    publicabstractvoid setRequestObject(ServletRequest servletrequest, String s, String s1)

        throws ServletException;

    在服务销毁时使用

    publicabstractvoid destroy();

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值