java - 如何将参数指定为每个 Web 服务调用的一部分?

标签 java spring jax-ws dry web-services

目前,我们应用程序的每个 Web 服务都有一个为每个方法添加的用户参数。例如:

@WebService
public interface FooWebService {
   @WebMethod
   public Foo getFoo(@WebParam(name="alwaysHere",header=true,partName="alwaysHere") String user, @WebParam(name="fooId") Long fooId);

 @WebMethod
   public Result deletetFoo(@WebParam(name="alwaysHere",header=true,partName="alwaysHere") String user, @WebParam(name="fooId") Long fooId);

   // ...
}

服务中可能有二十个方法,每个方法的第一个参数都是用户。并且可能有二十个 Web 服务。

我们实际上并没有在实现中使用“用户”参数——事实上,我不知道它为什么在那里——但我没有参与设计,把它放在那里的人是有原因的(我希望)。

无论如何,我正在努力理顺这个大泥球。

通过使用 Spring 代理包装 Web 服务,我已经取得了长足的进步,这让我可以在拦截器中进行一些前后处理(之前至少有 20 行复制粘贴样板)方法)。

我想知道是否有某种“消息头”我可以应用于方法或包,并且可以由某种类型的处理程序或每个 Web 服务方法之外的东西访问。

提前感谢您的建议, 下课

最佳答案

谁或什么在期待 user要绑定(bind)的消息 SOAP headers ?您的网络服务安全吗?那是某种身份验证 header 吗?这可能是初衷。其实,这些问题应该有人有答案。找谁。如果您发现您永远不需要它,请停止传递它。但是如果你需要它,我认为最好添加它(即使你现在不使用它)除非修改 WSDL 不是问题(尤其是在客户端)。

PS:我不知道如何避免使用 @WebParam(header=true) 添加参数到 Java 方法,以便生成具有 <soap:header> 操作的 WSDL在他们的输入中。据我所知,这就是从 Java 开始时 JAX-WS 的工作方式。

关于java - 如何将参数指定为每个 Web 服务调用的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569735/

相关文章:

java - 已删除的实体传递给持久异常

java - Spring MVC Web 应用程序中的模板

java - 是否可以通过编程方式控制 set-jaxb-validation-event-handler?

java - 在 JLayer 上方添加固定大小的 JPanel

java - Maven 未使用 Java 11 - 编译 : invalid target release: 11 的 fatal error

java - mysql监控管理

spring - 相当于Spring中的@ImplementedBy

java - spring-tx : Unable to locate Spring NamespaceHandler for XML schema namespace [http://www. springframework.org/schema/tx]

java - Apache CXF 未释放客户端

java - 如何在没有datamapper的情况下在Mule中调用soap webservice