服務方法在使用者請求調用處理使用者的資訊
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();
}