Webservice实现与调用(基于Spring的多种方式)
发布时间:2020-12-16 21:54:18 所属栏目:安全 来源:网络整理
导读:一、Webservice实现 实现方式分类 1. spring实现 bean配置 bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter" property name="baseAddress" value="http://localhost:8088/"/ /bean service @Component@WebService(serviceName="
一、Webservice实现实现方式分类1. spring实现
<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter"> <property name="baseAddress" value="http://localhost:8088/"/> </bean>
@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实现
<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; } }
@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 使用代理调用
<!-- 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 class Test { 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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |