您的位置:首页 > 编程语言 > Java开发

Webservice实现与调用(基于Spring的多种方式)

2017-11-27 09:43 267 查看

一、Webservice实现

实现方式分类

1.spring实现

bean配置

<beanclass="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
<propertyname="baseAddress"value="http://localhost:8088/"/>
</bean>


service

@Component
@WebService(serviceName="sapPushExpenseWebservice")
publicclassSapPushExpenseWebservice{
privatestaticLoggerlogger=LoggerFactory.getLogger(SapPushExpenseWebservice.class);
@WebMethod
publicResult<Object>pushExpense(@WebParam(name="expenseDTOSet")Set<String>expenseDTOSet){
logger.info(JSON.toJSONString(expenseDTOSet));
returnnull;
}
}


2.springboot实现

Cxfboot配置

<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
publicclassSapCxfConfig{

@Bean
publicServletRegistrationBeandispatcherServlet(){
returnnewServletRegistrationBean(newCXFServlet(),"/sap/soap/*");
}

@Bean(name=Bus.DEFAULT_BUS_ID)
publicSpringBusspringBus(){
returnnewSpringBus();
}

@Bean
publicISapPushExpenseWebservicesapPushExpenseWebservice(){
returnnewSapPushExpenseWebservice();
}

@Bean
publicEndpointendpoint(){
EndpointImplendpoint=newEndpointImpl(springBus(),sapPushExpenseWebservice());
endpoint.publish("/push");
returnendpoint;
}

}


service实现

@WebService
publicinterfaceISapPushExpenseWebservice{
@WebMethod
Result<Object>pushExpense(Set<SapExpenseDTO>expenseDTOSet);
}

publicclassSapPushExpenseWebserviceimplementsISapPushExpenseWebservice{

privatestaticLoggerlogger=LoggerFactory.getLogger(SapPushExpenseWebservice.class);

@Autowired
privateISapExpenseServicesapExpenseService;

@Override
publicResult<Object>pushExpense(Set<SapExpenseDTO>expenseDTOSet){
logger.info(JSON.toJSONString(expenseDTOSet));
returnsapExpenseService.pushExpense(expenseDTOSet);
}

}


3.dubbo实现

*'target='_blank'>http://blog.csdn.net/u012129031/article/details/53259877[/code]

二、Webservice调用

cxf客户端生产代码

下载地址

http://cxf.apache.org/


生成代码

远程生成
./wsdl2java-d/Users/moxingwang/Desktop/soap-clienthttp://localhost:8080/sap/soap/user?wsdl本地生成
./wsdl2java-pcom.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.第一种方式调用


publicstaticvoidmain(String[]args){

JaxWsDynamicClientFactorydcf=JaxWsDynamicClientFactory.newInstance();
Clientclient=dcf.createClient("http://192.168.224.182:8088/sapPushExpenseWebservice?wsdl");
try{

List<String>list=newArrayList<>();
list.add("测试");

Object[]objects=client.invoke("pushExpense",list);
System.out.println(JSON.toJSONString(objects[0]));

}catch(Exceptione){
e.printStackTrace();
}

}


2.第二种方式调用


JaxWsProxyFactoryBeanfactory=newJaxWsProxyFactoryBean();
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");
SIZFIFMECSRECEIVEOSport=(SIZFIFMECSRECEIVEOS)factory.create();

ZFIFMECSRECEIVEzfifmecsreceive=newZFIFMECSRECEIVE();
zfifmecsreceive.setICBUTYNUM("121221");
TABLEOFZMMFIFMCOMONOUTNEWtableofzmmfifmcomonoutnew=newTABLEOFZMMFIFMCOMONOUTNEW();

zfifmecsreceive.setETBELNR(tableofzmmfifmcomonoutnew);
ZFIFMECSRECEIVEResponsea=port.siZFIFMECSRECEIVEOS(zfifmecsreceive);



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: