目前,我们应用程序的每个 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/