2013-09-26 4 views
0

J'ai un WebService JAX-ws et j'ai besoin obtenir en-tête de savon, je fais ceci:Comment obtenir SoapHeader sur JAXWS WebService

@Resource 
private WebServiceContext context; 

MessageContext msContext = context.getMessageContext(); 
SOAPMessageContext soapMsgContext = (SOAPMessageContext) msContext; 
SOAPHeader soapHeader = soapMsgContext.getMessage().getSOAPHeader(); 
Iterator it=soapHeader.extractAllHeaderElements(); 

mais je dois problème de jeter MessageContext à SoapMessageContext, et je ne peux pas make SoapHandler parce que je ne peux pas envoyer d'objet de gestionnaire à webservice parce que pour envoyer j'ai besoin de mettre l'objet sur Application Scope et je ne veux pas cela.

+0

Vous dites que vous rencontrez un problème lors de la fusion de MessageContext vers SoapMessageContext. Quel problème avez-vous? Quel est le type réel de l'objet renvoyé par 'getMessageContext()'? – Kenster

Répondre

0

Quel en-tête s'attendre à recevoir? Étant donné que le javax.xml.ws.handler.MessageContext est trop un Map<String, Object>, vous pouvez imprimer tout le contenu:

import java.util.Map; 

import javax.annotation.Resource; 
import javax.jws.WebService; 
import javax.xml.ws.WebServiceContext; 

@WebService 
public class HelloWS { 

    @Resource 
    private WebServiceContext ctx; 

    public String sayHello(String name) { 
     Map<String, Object> map = ctx.getMessageContext(); 
     for (Object obj : map.entrySet()) { 
      System.out.println(obj); 
     } 
     return "Hello, " + name; 
    } 

} 
1

Je ne sais pas quelle version de JAX-WS vous utilisez.

Mais

@WebMethod 
public myResource(@WebParam(name = "MyHeader", header = true) String myHeader) { 
... 
} 

devrait faire l'affaire.

+1

Ceci (myHeader) renvoie null –

+0

même, j'ai obtenu null dans mon projet. comment obtenir la valeur? – squallbayu