一、Webservice实现

实现方式分类

1. spring实现

  • bean配置
<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
<property name="baseAddress" value="http://localhost:8088/"/>
</bean>
  • service
@Component
@WebService(serviceName="sapPushExpenseWebservice")
public class SapPushExpenseWebservice {
private static Logger logger = LoggerFactory.getLogger(SapPushExpenseWebservice.class);
@WebMethod
public Result<Object> pushExpense(@WebParam(name="expenseDTOSet") Set<String> expenseDTOSet) {
logger.info(JSON.toJSONString(expenseDTOSet));
return null;
}
}

2. spring boot实现

  • Cxf boot配置
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.6</version>
</dependency>
@Configuration
public class SapCxfConfig { @Bean
public ServletRegistrationBean dispatcherServlet() {
return new ServletRegistrationBean(new CXFServlet(), "/sap/soap/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
} @Bean
public ISapPushExpenseWebservice sapPushExpenseWebservice() {
return new SapPushExpenseWebservice();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), sapPushExpenseWebservice());
endpoint.publish("/push");
return endpoint;
} }
  • service实现
@WebService
public interface ISapPushExpenseWebservice {
@WebMethod
Result<Object> pushExpense(Set<SapExpenseDTO> expenseDTOSet);
} public class SapPushExpenseWebservice implements ISapPushExpenseWebservice { private static Logger logger = LoggerFactory.getLogger(SapPushExpenseWebservice.class); @Autowired
private ISapExpenseService sapExpenseService; @Override
public Result<Object> pushExpense(Set<SapExpenseDTO> expenseDTOSet) {
logger.info(JSON.toJSONString(expenseDTOSet));
return sapExpenseService.pushExpense(expenseDTOSet);
} }

3. dubbo实现

* http://blog.csdn.net/u012129031/article/details/53259877

二、Webservice调用

cxf客户端生产代码

下载地址

http://cxf.apache.org/

生成代码

远程生成
./wsdl2java -d /Users/moxingwang/Desktop/soap -client http://localhost:8080/sap/soap/user?wsdl
本地生成
./wsdl2java -p com.chinaredstar.bill.integration.demo.test -d /Users/moxingwang/Desktop/soap /Users/moxingwang/Desktop/ss.xml

使用代理调用

  • 依赖jar
 <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.9</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.9</version>
</dependency>
  • 调用代码
1.第一种方式调用
public static void main(String[] args) {

    JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://192.168.224.182:8088/sapPushExpenseWebservice?wsdl");
try {
List<String> list = new ArrayList<>();
list.add("测试"); Object[] objects = client.invoke("pushExpense", list);
System.out.println(JSON.toJSONString(objects[0])); }catch (Exception e){
e.printStackTrace();
} }
2.第二种方式调用
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(SIZFIFMECSRECEIVEOS.class);
factory.setUsername("ZWS_ECS");
factory.setPassword("abcd1234");
factory.setAddress("http://172.16.3.21:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_NREM&receiverParty
=&receiverService=&interface=SI_ZREI_BAPI_RE_CN_OVER_OS&interfaceNamespace=http%3A%2F%2Fchinaredstar.com%2Fecc2oms");
SIZFIFMECSRECEIVEOS port = (SIZFIFMECSRECEIVEOS) factory.create(); ZFIFMECSRECEIVE zfifmecsreceive = new ZFIFMECSRECEIVE();
zfifmecsreceive.setICBUTYNUM("121221");
TABLEOFZMMFIFMCOMONOUTNEW tableofzmmfifmcomonoutnew = new TABLEOFZMMFIFMCOMONOUTNEW(); zfifmecsreceive.setETBELNR(tableofzmmfifmcomonoutnew);
ZFIFMECSRECEIVEResponse a = port.siZFIFMECSRECEIVEOS(zfifmecsreceive);
 

Webservice实现与调用(基于Spring的多种方式)的更多相关文章

  1. 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)

    前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...

  2. (转)使用Spring的注解方式实现AOP的细节

    http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...

  3. (转)使用Spring的注解方式实现AOP入门

    http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...

  4. 基于spring多数据源动态调用及其事务处理

    需求: 有些时候,我们需要连接多个数据库,但是,在方法调用前并不知道到底是调用哪个.即同时保持多个数据库的连接,在方法中根据传入的参数来确定. 下图的单数据源的调用和多数据源动态调用的流程,可以看出在 ...

  5. python发布及调用基于SOAP的webservice

    现如今面向服务(SOA)的架构设计已经成为主流,把公用的服务打包成一个个webservice供各方调用是一种非常常用的做法,而应用最广泛的则是基于SOAP协议和wsdl的webservice.本文讲解 ...

  6. 基于Spring Boot,使用JPA动态调用Sql查询数据

    在<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>,<基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合 ...

  7. 基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合

    在上一篇<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>中完成了使用JPA对实体数据的CRUD操作. 那么,有些情况,会把一些查询语句写在存储过程中,由 ...

  8. Spring学习总结(一)——Spring实现IoC的多种方式

    控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法.没有IoC的程序中我们使用面向对象编程对象的创 ...

  9. Spring实战5:基于Spring构建Web应用

    主要内容 将web请求映射到Spring控制器 绑定form参数 验证表单提交的参数 对于很多Java程序员来说,他们的主要工作就是开发Web应用,如果你也在做这样的工作,那么你一定会了解到构建这类系 ...

随机推荐

  1. SVM初学

    一.            一点基础数学知识 如今硕士都快毕业了,反而将自己的很多数学知识忘的几乎相同了.所以.如今决心再捡起来.以补齐自己的数学短板.为以后的研究做好铺垫吧.如今结合自己学习SVM. ...

  2. Spark1.0.0 应用程序部署工具spark-submit

    原文链接:http://blog.csdn.net/book_mmicky/article/details/25714545 随着Spark的应用越来越广泛,对支持多资源管理器应用程序部署工具的需求也 ...

  3. qt study 泛型和容器

    所谓泛型(generic) 能够像操作基本类型一样轻松操作对象的类和函数. qt容器类就是泛型类,基于模板的泛型类. 重载运算符overloaed operator, 托管容器 managed con ...

  4. HDFS API操作实践

    本文提供几个简单的实例,来说明如何使用hadoop的java API针对HDFS进行文件上传.创建.重命名.删除操作 本文地址:http://www.cnblogs.com/archimedes/p/ ...

  5. win10 修改cmd终端编码格式为utf8

    最近在使用ssh 连接服务器时,好多中文显示为乱码,查明原因,是因为自己cmd终端编码给是为gbk,而服务器编码格式为utf8,所以需要修改cmd终端编码格式为utf8,但是网上看到好多解决方案是 1 ...

  6. jdk1.7下载路径

    http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

  7. 初始小R-安装启动与测试

    非常感谢<深入浅出数据分析>这本书让我有幸认识了R,多多少少的弥补了我心里对R语言.R分析.R工具的模糊认知,下面我们就来体验一下R语言的魅力吧!GO! 一:下载R R官方地址:http: ...

  8. Leet Code OJ 226. Invert Binary Tree [Difficulty: Easy]

    题目: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 思路分析: 题意是将二叉树全部左右子数 ...

  9. Android媒体扫描详细解析之二(MediaScanner & MediaProvider)

    上篇blog说到了经过对文件夹进行扫描如果后缀符合系统设定的一些格式,那么就会进行文件内容扫描下面我们紧接着STEP 14中的 status_t StagefrightMediaScanner::pr ...

  10. 让Android App启动更协调

          不知道大伙有没有发现,应用第一次启动的时候一般比较慢(低配置手机尤其如此),黑屏好一段时间,下面是我在模拟器中启动QQ的截图,黑屏差不多有5秒左右,如下图所示~      显然这种结果很糟 ...