当我部署并运行使用 JAX-WS 开发的 Web 服务时,我可以看到一个包含一些信息的摘要页面,如下图所示:
http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/
对于最终实现,我们希望删除此页面,以便返回自定义页面或空白页面,同时仍然可以访问 Web 服务端点。
我们目前在 Tomcat 上运行。
当我部署并运行使用 JAX-WS 开发的 Web 服务时,我可以看到一个包含一些信息的摘要页面,如下图所示:
http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/
对于最终实现,我们希望删除此页面,以便返回自定义页面或空白页面,同时仍然可以访问 Web 服务端点。
我们目前在 Tomcat 上运行。
类中有一个字段WSServlet
可能会执行您要查找的操作:(JAXWS_RI_PROPERTY_PUBLISH_STATUS_PAGE
其值为com.sun.xml.ws.server.http.publishStatusPage
)。
查看来自 JAX-WS 下载的源代码,您似乎需要将其设置为web.xml
文件中的上下文参数:
<web-app>
<context-param>
<param-name>com.sun.xml.ws.server.http.publishStatusPage</param-name>
<param-value>false</param-value>
</context-param>
...
似乎HttpAdapter
有类似的东西,但取自环境变量:
setPublishStatus(
System.getProperty(HttpAdapter.class.getName() + ".publishStatusPage")
.equals("true"));
上的代码在HttpAdapter
javadoc 中被标记为已弃用,因此上下文参数似乎是可行的方法。
这两天我一直在尝试解决这个问题,Glassfish 3.1.2。
唯一的解决方案是让
-Dcom.sun.xml.ws.transport.http.HttpAdapter.publishStatusPage=false
我知道它的旧,但想保持知识。希望这可以帮助任何人解决这个问题。
我最近为 WebLogic 完成了相同的任务。请求根据目标环境隐藏/显示公共 Web 服务的状态页面,即隐藏用于生产,显示用于开发。以前的答案对我没有任何帮助。成功的解决方案是基于 javax.servlet.Filter 的实现。
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.HttpMethod;
@WebFilter(urlPatterns = { "/WeblogicWebService" })
public class FilterStatusSoapPage implements Filter {
@Value("${soap.status.page.disabled}")
private boolean flagDisablePublishStatusPage;
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpRes = (HttpServletResponse) response;
String queryString = httpReq.getQueryString();
if(flagDisablePublishStatusPage)
if(queryString == null || queryString.trim().isEmpty())
if(HttpMethod.GET.matches(httpReq.getMethod())) {
httpRes.setStatus(HttpServletResponse.SC_OK);
httpRes.getWriter().write("Access to status page of Web
Service is not allowed");
httpRes.getWriter().flush();
httpRes.getWriter().close();
return;
}
} catch (Exception e) {
System.err.println("Error on FilterStatusSoapPage filter");
chain.doFilter(request, response);
return;
}
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {}
public void destroy() {}
}