【问题标题】:How to add response header in JAX-WS如何在 JAX-WS 中添加响应头
【发布时间】:2013-10-07 07:40:35
【问题描述】:

我开发了一个基于 Web 服务的 Web 组件,我使用 Web 服务发布我的服务 我想在响应中添加标头,以便客户端可以将该标头与响应结果一起使用

我的网络服务类..

@WebService()
public class FooService{

@WebMethod()
public String fooWebMethod(String input){
//----some code----
  return resultString;
 }

}

我的网络服务客户端类..

public class WebServInvoker { 
public static void main(String[] args) {
             FooServiceServiceLocator locator = new FooServiceServiceLocator();
             FooService wsClient = locator.getFooServicePort();
             wsClient.fooWebMethod("some string");

       }
}

现在我想在网络服务响应中向用户发送额外的信息,我不知道该怎么做请帮助我

【问题讨论】:

标签: java web-services jakarta-ee jax-ws


【解决方案1】:

添加处理程序。一种方法如下

@WebService()
@HandlerChain(file = "FooService-HandlerChain.xml")
public class FooService{
      //your code 
}

然后是你的处理程序文件

<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
  <handler-chain>
  <service-name-pattern xmlns:ns1="yournamespacepattern">ns1:FooService</service-name-pattern>
  <handler>
     <handler-name>HandlerClassName</handler-name>
     <handler-class>packagename.HandlerClassName</handler-class>
  </handler>

然后是你的处理程序类

 public class HandlerClassName implements SOAPHandler<SOAPMessageContext>
 {
  public HandlerClassName () {
 }

public Set<QName> getHeaders(){
    return // set of headers;
}


public boolean handleMessage(SOAPMessageContext context)
{
     //handle message
}

}

【讨论】:

  • 谢谢@Optional.. 让我尝试这样做
  • 这将从客户端添加标头以从服务器端读取...它将如何用于从服务器端添加标头并从客户端收集它
  • @IndraYadav 代码在服务器端。是不是。注解@Webservice注解是服务端的。
  • 是的,这是服务器端,但我的问题是我们将如何添加可以从客户端读取的标头...我认为 getHeader() 用于获取 Web 服务请求中的标头
  • 参见@IndraYadav,使用此代码服务器可以在句柄消息的响应中添加“标题”。在将 RESPONSE 发送到客户端之前调用 handleMessage。现在,一旦您在客户端收到响应,您就可以阅读它
猜你喜欢
  • 1970-01-01
  • 2015-07-19
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
相关资源
最近更新 更多