在Weblogic Web Service中获取 HttpServletRequest/Response 对象

如果 Web Service 使用 HTTP 作为传输协议,则使用 weblogic.wsee.connection.transport.servlet.HttpTransportUtils API 可以从 JAX-RPC ServletEndpointContext 对象获取 javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletResponse 对象,如以下示例所示(相应的代码以粗体表示,在示例后有相应的说明):
package examples.webservices.http_transport_utils;
import javax.xml.rpc.server.ServiceLifecycle;
import javax.xml.rpc.server.ServletEndpointContext;
import javax.xml.rpc.ServiceException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.jws.WebMethod;
import javax.jws.WebService;
import weblogic.jws.WLHttpTransport;
import weblogic.wsee.connection.transport.servlet.HttpTransportUtils;
@WebService(name="HttpTransportUtilsPortType",
serviceName="HttpTransportUtilsService",
targetNamespace="http://example.org")
@WLHttpTransport(contextPath="servlet", serviceUri="HttpTransportUtils",
portName="HttpTransportUtilsPort")
public class HttpTransportUtilsImpl implements ServiceLifecycle {
  private ServletEndpointContext wsctx = null;
  public void init(Object context) throws ServiceException {
System.out.println("ServletEndpointContext inited...");
wsctx = (ServletEndpointContext)context;
}
  public void destroy() {
System.out.println("ServletEndpointContext destroyed...");
wsctx = null;
}
  @WebMethod()
public String getServletRequestAndResponse() {
    HttpServletRequest request =
HttpTransportUtils.getHttpServletRequest(wsctx.getMessageContext());
HttpServletResponse response =
HttpTransportUtils.getHttpServletResponse(wsctx.getMessageContext());
    System.out.println("HttpTransportUtils API used successfully.");
return "HttpTransportUtils API used successfully";
  }
}

上述示例的重要部分如下:

  • 导入所需的 JAX-RPC 和 Servlet 类:
  • import javax.xml.rpc.server.ServiceLifecycle;
    import javax.xml.rpc.server.ServletEndpointContext;
    import javax.xml.rpc.ServiceException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
  • 导入 WebLogic HttpTransportUtils 类:
  • import weblogic.wsee.connection.transport.servlet.HttpTransportUtils;
  • 由于您将查询 JAX-RPC 消息上下文,因此您的 JWS 文件必须明确实现 ServiceLifecycle
  • public class HttpTransportUtilsImpl implements ServiceLifecycle 
  • 创建 ServletEndpointContext 数据类型的变量:
  •  private ServletEndpointContext wsctx = null;
  • 由于 JWS 文件实现 ServiceLifecycle,因此您还必须实现 initdestroy 生命周期方法:
  •   public void init(Object context) throws ServiceException {
    System.out.println("ServletEndpointContext inited...");
    wsctx = (ServletEndpointContext)context;
    }
    public void destroy() {
    System.out.println("ServletEndpointContext destroyed...");
    wsctx = null;
    }
  • 最后,在实现 Web Service 操作的方法中,使用 ServletEndpointContext 对象获取 HttpServletRequestHttpServletResponse 对象:
  • HttpServletRequest request =
    HttpTransportUtils.getHttpServletRequest(wsctx.getMessageContext());
    HttpServletResponse response =
    HttpTransportUtils.getHttpServletResponse(wsctx.getMessageContext());
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值