如果 Web Service 使用 HTTP 作为传输协议,则使用
weblogic.wsee.connection.transport.servlet.HttpTransportUtils
API 可以从 JAX-RPC
ServletEndpointContext
对象获取
javax.servlet.http.HttpServletRequest
和
javax.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";
}
}
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;HttpTransportUtils
类:import weblogic.wsee.connection.transport.servlet.HttpTransportUtils;
ServiceLifecycle
:public class HttpTransportUtilsImpl implements ServiceLifecycle
ServletEndpointContext
数据类型的变量:private ServletEndpointContext wsctx = null;
ServiceLifecycle
,因此您还必须实现init
和destroy
生命周期方法: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;
}ServletEndpointContext
对象获取HttpServletRequest
和HttpServletResponse
对象:HttpServletRequest request =
HttpTransportUtils.getHttpServletRequest(wsctx.getMessageContext());
HttpServletResponse response =
HttpTransportUtils.getHttpServletResponse(wsctx.getMessageContext());