考虑一个简单的servlet:
// MyServlet.java
protected void doGet(HttpServletRequest request, HttpServletResponse response)
{
UtilClass.doSomething(getServletContext().getRealPath(SOME_FILE));
}
实用程序类会对文件执行以下操作:
// UtilClass.java
public String doSomething(String filePath)
{
File f = new File(filePath);
String s = readWhateverFrom(f);
return s;
}
我现在将
doSomething()
函数移植到在Tomcat和Axis2下运行的Web服务。我将如何移植它以便仍然可以访问上下文并获得对servlet下文件的访问? 最佳答案
您应该了解(jax-ws)MessageContext
。这取决于您的配置,但也许使用
@Resource
private WebServiceContext wsCtx;
并在您的方法中:
MessageContext messageContext = wsCtx.getMessageContext()
ServletContext ctx = (ServletContext)
messageContext.getProperty(MessageContext.SERVLET_CONTEXT);
编辑:好像Axis2(以及Axis)支持以下内容:
HttpServlet servlet = (HttpServlet)
MessageContext.getCurrentContext().getProperty(HTTPConstants.MC_HTTP_SERVLET);
ServletContext ctx = servlet.getServletContext();
具有以下导入:
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.transport.http.HTTPConstants;