Java 在处理程序(JAX-WS)上使用获取端点的Url
我正在使用一个公共处理程序类实现许多JAX-WSWeb服务,以验证传入SOAP消息的正确结构 是否有某种方法可以获取当前消息指向的URL,以便我可以从该URL自动获取架构并验证消息?找到Java 在处理程序(JAX-WS)上使用获取端点的Url,java,jax-ws,java-metro-framework,Java,Jax Ws,Java Metro Framework,我正在使用一个公共处理程序类实现许多JAX-WSWeb服务,以验证传入SOAP消息的正确结构 是否有某种方法可以获取当前消息指向的URL,以便我可以从该URL自动获取架构并验证消息?找到 public class HeaderHandler implements SOAPHandler<SOAPMessageContext> { public boolean handleMessage(SOAPMessageContext smc) { System.out.println
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {
public boolean handleMessage(SOAPMessageContext smc) {
System.out.println("URL of Endpoint" +smc.get(JAXWSProperties.HTTP_REQUEST_URL));
}
}
公共类HeaderHandler实现SOAPHandler{
公共布尔handleMessage(SOAPMessageContext smc){
System.out.println(“端点的URL”+smc.get(JAXWSProperties.HTTP_请求_URL));
}
}
在我的应用程序中smc.get(JAXWSProperties.HTTP\u REQUEST\u URL)
返回null。
我找到了另一种方法,我希望这有帮助:
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {
public boolean handleMessage(SOAPMessageContext smc) {
String endpointAddress = (String) smc.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
log.debug("endpointAddress " +endpointAddress);
}
}
公共类HeaderHandler实现SOAPHandler{
公共布尔handleMessage(SOAPMessageContext smc){
字符串endpointAddress=(字符串)smc.get(BindingProvider.ENDPOINT\u ADDRESS\u属性);
log.debug(“endpointAddress”+endpointAddress);
}
}
JAXWSProperties.HTTP\u REQUEST\u URL和BindingProvider.ENDPOINT\u ADDRESS\u属性对我都不起作用
这就是我如何在WildFly 10(Java 7)上获得出站消息中的url:
制作不同的方法并将第一个元素作为方法名,这样您就可以直接使用varisous soap消息是的,您是对的。我发现,当处理的消息是来自服务器的响应时,需要填充该消息。在本例中,使用的HTTP方法不是GET,而是POST,因此HTTP_请求_URL为空。总之,如果您需要在传入消息上作为服务器获取Url,那么应该使用HTTP\u请求\u Url,而如果您像客户端端点\u地址\u属性一样进行此操作。至少在Tomcat7中<代码>com.sun.xml.ws.developerfor
JAXWSProperties
在Java7中似乎不可用。还有别的选择吗?
public boolean handleMessage(SOAPMessageContext context) {
String url = (String) context.get(MessageContext.PATH_INFO);
...
}