2010-09-01 176 views
1

应用程序配置的Java EE 5 JAX-WS 2.0 Web服务:使用带注释创建JAX-WS 2.0 Web服务的Java的第一种方法如何初始化参数

  • Web应用程序。
  • 的WebLogic 10.3

我的要求

我是基于从该服务被访问的URL来部署一个Web服务实现类,而是更改逻辑的要求。

问题: 我假设一个好办法,这样做是为了在web.xml部署不同的映射,并使用不同的参数初始化。有没有更好的办法?

将逻辑从访问Web服务的URL切换出去的最佳方式是什么?我应该尝试在web.xml中使用初始化参数配置两个servlet映射(尝试过,但无法让它工作),还是应该解析服务impl中的URL?任何其他的选择?

我试了一下(但不工作)

我已经尝试添加在web.xml中<init-param><servlet>元素。但是,无法访问Web服务中的ServletConfig对象来检索参数。 Web服务不具有标准Servlet的所有功能(即使我实现ServletServletContextListener)。我只能访问WebServiceContext(看来),从那里我只能得到<context-param>元素 - 但我需要<init-param>元素。

在web.xml中,我使用相同的Java类输入了两个<servlet>元素,但它们映射到两个不同的URL,如下所示。注意每个Servlet映射中“source”参数的不同。

<servlet> 
    <servlet-name>Foo</servlet-name> 
    <servlet-class>com.Foo</servlet-class> 
    <init-param> 
     <param-name>source</param-name> 
    <param-value>1</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Foo</servlet-name> 
    <url-pattern>/Foo</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>Bar</servlet-name> 
    <servlet-class>com.Foo</servlet-class> 
    <init-param> 
     <param-name>source</param-name> 
    <param-value>2</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Bar</servlet-name> 
    <url-pattern>/Bar</url-pattern> 
</servlet-mapping> 

回答

1

你很可能有,但你在运行时是否尝试使用MessageContext来确定源是什么?

@WebService 
public class CalculatorService implements Calculator 
{ 

    @Resource 
    private WebServiceContext context; 

    @WebMethod 
    public void getCounter() 
    { 
     MessageContext mc = wsContext.getMessageContext(); 
     // you can grab the HttpSession 
     HttpSession session = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession(); 
     // ...or maybe the path info is enough 
     String path = mc.get(MessageContext.PATH_INFO); 
     // the query itself should almost definitely be enough 
     String query = (String) mc.get(MessageContext.QUERY_STRING); 
    } 

} 

我从http://sirinsevinc.wordpress.com/category/jaxws/得到了主意。虽然没有尝试过。

+0

该解决方案或一个类似解决方案似乎是唯一的解决方案。我会将此逻辑添加到在入站请求中的链中执行的Soap处理程序(在此处设置消息中的参数)。感谢您的想法。我希望这将是一个简单的配置,但它看起来会比这更多。 – Steve 2010-09-15 15:53:23

+0

@Steve:祝你好运! – 2010-09-15 21:22:58