当前位置:首页 > Java

java如何调用wsdl接口

2026-03-04 07:13:33Java

调用WSDL接口的方法

使用JAX-WS生成客户端代码

通过wsimport工具生成客户端存根代码,该工具是JDK自带的。假设WSDL地址为http://example.com/service?wsdl,执行以下命令:

wsimport -keep -p com.example.client http://example.com/service?wsdl

参数说明:

  • -keep:保留生成的.java源文件
  • -p:指定生成代码的包名

生成后会在指定包路径下创建服务端点和接口类,直接实例化即可调用:

MyService service = new MyService();
MyServicePortType port = service.getMyServicePort();
String result = port.someMethod(param1, param2);

动态代理方式调用

不生成静态代码,运行时动态创建代理:

URL wsdlUrl = new URL("http://example.com/service?wsdl");
QName serviceName = new QName("http://example.com/", "MyService");
Service service = Service.create(wsdlUrl, serviceName);
MyServicePortType port = service.getPort(MyServicePortType.class);

使用Apache CXF框架

添加Maven依赖:

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.5.5</version>
</dependency>

代码实现:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(MyServicePortType.class);
factory.setAddress("http://example.com/service");
MyServicePortType client = (MyServicePortType) factory.create();
client.someMethod(param);

处理WS-Security等扩展

对于需要安全认证的接口,CXF提供WS-Security支持:

Map<String, Object> props = new HashMap<>();
props.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
props.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
props.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordCallback.class.getName());

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getOutInterceptors().add(new WSS4JOutInterceptor(props));

注意事项

  • 生成的客户端代码需与服务端保持版本同步
  • 复杂类型可能需要额外处理数据绑定
  • 生产环境建议添加连接超时设置:
    BindingProvider bp = (BindingProvider)port;
    bp.getRequestContext().put(BindingProviderProperties.CONNECT_TIMEOUT, 10000);
    bp.getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT, 30000);

java如何调用wsdl接口

标签: 接口java
分享给朋友:

相关文章

vue调用后台接口实现

vue调用后台接口实现

Vue 调用后台接口的实现方法 在 Vue 中调用后台接口通常涉及以下几个关键步骤: 安装必要的依赖 确保项目中安装了 axios 或 fetch 等 HTTP 请求库。通过以下命令安装 axio…

java如何创建线程

java如何创建线程

创建线程的方法 在Java中,创建线程主要有两种方式:继承Thread类和实现Runnable接口。以下是具体实现方法: 继承Thread类 通过继承Thread类并重写run()方法可以创建线程。…

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名.方…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

java前景如何

java前景如何

Java 当前的市场需求 Java 在企业级开发、大数据、云计算等领域仍占据重要地位。许多大型企业(如银行、电商平台)依赖 Java 构建后端系统。招聘平台数据显示,Java 开发岗位数量稳定,尤其在…