Java 如何在Metro/WebLogic 11g中启用JAX-WS客户端验证

Java 如何在Metro/WebLogic 11g中启用JAX-WS客户端验证,java,web-services,weblogic,jax-ws,java-metro-framework,Java,Web Services,Weblogic,Jax Ws,Java Metro Framework,我希望在将SOAP消息发送到端点之前启用SOAP消息的客户端验证 如何在运行于WebLogic 10.3.6/Metro provider的客户端应用程序中启用它,最好使用JAX-WS API Metro版本是JDK6中的JAX-WSRI2.1.6 以下是我的JAX-WS客户端的示例代码: @WebService public class Client { @WebServiceRef(wsdlLocation = "RemoteService.wsdl") private R

我希望在将SOAP消息发送到端点之前启用SOAP消息的客户端验证

如何在运行于WebLogic 10.3.6/Metro provider的客户端应用程序中启用它,最好使用JAX-WS API

Metro版本是JDK6中的JAX-WSRI2.1.6

以下是我的JAX-WS客户端的示例代码:

@WebService
public class Client {

    @WebServiceRef(wsdlLocation = "RemoteService.wsdl")
    private RemoteService_Service service;

    public void call() throws Exception {

        RemoteService port = service.getRemoteServicePort();

        // configures authentication
        auth(port);

        // builds request
        Request request = new Request();
        request.setValue(null); // this field is mandatory in server

        // client must validate and raise an exception
        port.someOperation(request);

    }

    protected void auth(RemoteService port) {
        Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext();
        requestContext.put(BindingProvider.USERNAME_PROPERTY, "changeit");
        requestContext.put(BindingProvider.PASSWORD_PROPERTY, "changeit");
    }
}
@WebService
公共类客户端{
@WebServiceRef(wsdlLocation=“RemoteService.wsdl”)
专用远程服务;
public void call()引发异常{
RemoteService端口=service.getRemoteServicePort();
//配置身份验证
认证(端口);
//生成请求
请求=新请求();
request.setValue(null);//此字段在服务器中是必需的
//客户端必须验证并引发异常
端口操作(请求);
}
受保护的无效身份验证(远程服务端口){
Map requestContext=((BindingProvider)端口).getRequestContext();
put(BindingProvider.USERNAME_属性,“changeit”);
put(BindingProvider.PASSWORD_属性,“changeit”);
}
}
Metro文档介绍了如何执行此操作:

需要使用SchemaValidationFeature创建代理才能启用 客户端验证。传出的SOAP请求和传入的SOAP请求 将验证SOAP响应

例4.9。启用具有架构验证的代理

import com.sun.xml.ws.developer.SchemaValidationFeature;
...

SchemaValidationFeature feature = new SchemaValidationFeature();
HelloPort port = new HelloService.getHelloPort(feature);
// All invocations on this port are validated