用cxf直接将一个pojo作为WS进行发布,如果想在pojo中读取container的配置参数,由于pojo和Servlet无半点关系,这里借助WebServiceContext,代码:
定义一个WebServiceContext变量,container会自动注入,因此可以直接使用。
代码参考: http://stackoverflow.com/questions/261348/how-can-i-access-the-servletcontext-from-within-a-jax-ws-web-service
同时感谢群里的tank大牛。
但这里有个问题:就是只能取<context-param>中的参数,单独为<servlet>配置的参数取不到。
其实还有一个解决方法:继承CXFServlet,然后重写里面相应的方法。
public class HelloWorld implements IHelloWorld {
@Resource
private WebServiceContext context;
@Override
public String say(String name) {
ServletContext servletContext = (ServletContext)context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
System.out.println(servletContext.getInitParameter("loc"));//loc是web.xml中的<context-param>
System.out.println(servletContext.getInitParameter("loc2"));//loc2是web.xml单独为Servlet配置的<init-param>
System.out.println("================");
try {
System.out.println(this.getClass().getResource("/").toURI());
} catch (URISyntaxException e) {
e.printStackTrace();
}
return "your name is "+name;
}
定义一个WebServiceContext变量,container会自动注入,因此可以直接使用。
代码参考: http://stackoverflow.com/questions/261348/how-can-i-access-the-servletcontext-from-within-a-jax-ws-web-service
同时感谢群里的tank大牛。
但这里有个问题:就是只能取<context-param>中的参数,单独为<servlet>配置的参数取不到。
其实还有一个解决方法:继承CXFServlet,然后重写里面相应的方法。