要被调用的 WebService 需要被添加一些特定的 HTTP header(注意不是 SOAP 的 XML 体中的 HEAD)用于服务的做鉴权处理使用。因为 WebService 调用也是一种特殊的的 HTTP 调用(HTTP XML 格式的 RequestBody 符合 SOAP 规范的 HTTP POST 请求),自然也可以要求添加 HTTP Header。
本文针对使用 Jax 调用 WebService 如何添加 Http Header 给出示例代码,如下:
* WebService 调用示例
* @author shanhy
* @date 2020/11/19 21:06
@Service
@Slf4j
public class DemoInvokeWebService {
public String invokeService1(){
String address = "http://localhost:8081/muses-gateway/wsdl/example/services/ws/demoWsApi?wsdl";
// 代理工厂
JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
// 设置代理地址
jaxWsProxyFactoryBean.setAddress(address);
// 设置接口类型
jaxWsProxyFactoryBean.setServiceClass(DemoWebService.class);
// 创建一个代理接口实现
DemoWebService us = (DemoWebService) jaxWsProxyFactoryBean.create();
// 从服务接口的代理对象获取底层client对象
Client proxy = ClientProxy.getClient(us);
// 创建 HTTP headers
Map<String, List<String>> headers = new HashMap<>();
headers.put("MY-SERVICE-NAME", Collections.singletonList("MySampleService"));
headers.put("MY-APP-NAME", Collections.singletonList("MySampleServiceApp"));
// 添加 HTTP headers 到 webservice 请求中
proxy.getRequestContext().put(Message.PROTOCOL_HEADERS, headers);
// 数据准备
String name = "SHANHY";
// 调用代理接口的方法调用并返回结果
String result = us.hello(name);
log.info("webservice返回结果:" + result);
return result;
public interface DemoWebService {
String hello(String name);
(END)
场景要被调用的 WebService 需要被添加一些特定的 HTTP header(注意不是 SOAP 的 XML 体中的 HEAD)用于服务的做鉴权处理使用。因为 WebService 调用也是一种特殊的的 HTTP 调用(HTTP XML 格式的 RequestBody 符合 SOAP 规范的 HTTP POST 请求),自然也可以要求添加 HTTP Header。示例本文针对使用 Jax 调用 WebService 如何添加 Http Header 给出示例代码,如下:/** * WebSe
其实调用代码关键就简单几行
一个实现类,一个引用接口、接口主要指定需要调用的webservice地址中的方法、参数、返回类型的配置
public Object webserviceRequest(String bidCode){
try {
JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
package com.bw.integrator.config.webSerivce;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
import org.apache.cxf.interceptor.Fault;
import org.apac
1、 JaxWsProxyFactoryBean
简介:调用方式采用了和RMI类似的机制,即客户端直接调用服务器端提供的服务接口(interface),CXF通过运行时代理生成远程服务的代理对象,在客户端完成对webservice的访问;几个必填的字段:setAddress-这个就是我们发布webservice时候的地址,保持一致
缺点:这 种调用service的好处在于调用...
@WebMethod(operationName = "Login", action = "urn:Login")
@WebResult(targetNamespace = "http://axis2.anti.favite.com")
@RequestWrapper(localName = "Login", targetNamespace = "http://axis2.a
3.1通过SAAJ(直接传递SoapBody和SOAPheader对象,通过Dispatcher传递消息)
客户端可以处理,服务器端无法获取
3.2使用SOAPHandler处理(SOAPMessageContext)
3.3基于...
1、调用方式介绍
调用WebService的Java客户端一般采用以下三种方式:
生成的stub、proxy(动态代理)以及dispatch(动态调用接口)。dispatch又分为payload和message两种方式。
这里仅就dispatch的message方式进行介绍。那好了,现在让我们一起体验WebService动态调用的好处吧!
2、动态调用WebService
最近项目中需要开发webservice对外提供服务,选用框架时主要考虑Axis和CXF。Axis跨语言是它的一大特点,但因为主程序是Spring Boot开发,CXF可以与它无缝对接。所以选用了CXF框架。在网上扒拉了许久,大多都是和Spring集成的例子,通过一番折腾,终于实现了Spring Boot和CXF的集成完成了任务的开发,在此坐下笔记。
一、添加依赖
项目是用grad
* 生成JaxWsDynamicClientFactory
public static JaxWsDynamicClientFactory getJaxWsDynamicClientFactory() {
IParamsConfigService paramsConfigService =
@Configuration
@Lazy
@PropertySource(value = "classpath:application.properties",ignoreResourceNotFound = true)
@PropertySource(value = "classpath:app...
import java.util.ResourceBundle;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean...
Rancher 创建 RKE2 集群,日志错误:system-default-registry: registries must be valid RFC 3986 URI
colmanyan: