加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService学习笔记-使用CXF编写基于Spring的Webservice

发布时间:2020-12-16 23:19:08 所属栏目:安全 来源:网络整理
导读:新建Web工程,目录结构如图 Order.java实体类 public?class?Order?{private?int?id;private?String?name;private?double?price;///...省略getter?setter?toString方法public?Order()?{//无参构造函数super();}} OrderWS.java接口 package?com.umgsai.ws;impo

新建Web工程,目录结构如图

wKiom1Q8gu_Ro01BAAENwYpsGGo422.jpg

Order.java实体类

public?class?Order?{
	private?int?id;
	private?String?name;
	private?double?price;
	///...省略getter?setter?toString方法
	public?Order()?{//无参构造函数
		super();
	}
}


OrderWS.java接口

package?com.umgsai.ws;

import?javax.jws.WebMethod;
import?javax.jws.WebService;

import?com.umgsai.beans.Order;
@WebService
public?interface?OrderWS?{

	@WebMethod
	public?Order?getOrderById(int?id);
}

OrderWSImpl.java实现接口

package?com.umgsai.ws.impl;

import?com.umgsai.beans.Order;
import?com.umgsai.ws.OrderWS;

public?class?OrderWSImpl?implements?OrderWS{

	@Override
	public?Order?getOrderById(int?id)?{
		System.out.println("Server?getOrderById:"?+?id);
		return?new?Order(id,?"Car",?200000);
	}

}

beans.xml

<?xml?version="1.0"?encoding="UTF-8"?>
<beans?xmlns="http://www.springframework.org/schema/beans"
???xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
???xmlns:jaxws="http://cxf.apache.org/jaxws"
???xsi:schemaLocation="
???http://www.springframework.org/schema/beans?
???http://www.springframework.org/schema/beans/spring-beans.xsd
???http://cxf.apache.org/jaxws?http://cxf.apache.org/schemas/jaxws.xsd">
???<!--?引入CXF的核心配置?-->
???<import?resource="classpath:META-INF/cxf/cxf.xml"?/>?
???<import?resource="classpath:META-INF/cxf/cxf-extension-soap.xml"?/>
???<import?resource="classpath:META-INF/cxf/cxf-servlet.xml"?/>?
???<jaxws:endpoint?
?????id="orderWS"?
?????implementor="com.umgsai.ws.impl.OrderWSImpl"?
?????address="/orderWS"?/>
</beans>

web.xml

<?xml?version="1.0"?encoding="UTF-8"?>
<web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?xmlns="http://java.sun.com/xml/ns/javaee"?xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"?xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"?id="WebApp_ID"?version="2.5">
??<display-name>WS_spring</display-name>
??<welcome-file-list>
????<welcome-file>default.jsp</welcome-file>
??</welcome-file-list>
??
??<!--?配置beans?-->
??<context-param>
??????<param-name>contextConfigLocation</param-name>
??????<param-value>classpath:beans.xml</param-value>
???</context-param>
???<!--?
???	应用启动监听器
????-->
???<listener>
??????<listener-class>
?????????org.springframework.web.context.ContextLoaderListener
??????</listener-class>
???</listener>
???<!--?
???	所有的请求都会先经过CXF框架
????-->
???<servlet>
??????<servlet-name>CXFServlet</servlet-name>
??????<servlet-class>
?????????org.apache.cxf.transport.servlet.CXFServlet
??????</servlet-class>
??????<load-on-startup>1</load-on-startup>
???</servlet>
???<servlet-mapping>
??????<servlet-name>CXFServlet</servlet-name>
??????<url-pattern>/*</url-pattern>
???</servlet-mapping>
</web-app>

启动项目

http://localhost:8080/WS_spring/orderWS?wsdl?可以查看发布的服务

源码?http://yunpan.cn/cg4kLXaK8k5HS?(提取码:7c34)


客户端调用上面发布的服务。

wKiom1Q8jM2xayRIAADdoMf5wLo450.jpg

使用CXF自带的工具生成客户端代码

apache-cxf-3.0.1bin>wsdl2java ?http://localhost:8080/WS_spring/orderWS?wsdl


client-beans-xml

<?xml?version="1.0"?encoding="UTF-8"?>
<beans?xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans?
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://cxf.apache.org/jaxws?http://cxf.apache.org/schemas/jaxws.xsd">
	<jaxws:client?id="orderClient"?serviceClass="com.umgsai.ws.OrderWS"
		address="http://localhost:8080/WS_spring/orderWS"?/>
</beans>

client.java 客户端代码

package?com.umgsai.ws.client;

import?org.springframework.context.support.ClassPathXmlApplicationContext;

import?com.umgsai.ws.Order;
import?com.umgsai.ws.OrderWS;

public?class?Client?{
	public?static?void?main(String[]?args)?{
		ClassPathXmlApplicationContext?applicationContext?=?new?ClassPathXmlApplicationContext("client-beans.xml");
		OrderWS?orderWS?=?(OrderWS)?applicationContext.getBean("orderClient");
		Order?order?=?orderWS.getOrderById(23);
		System.out.println(order);
	}
}

客户端打印结果

Order [id=23,name=Car,price=200000.0]

服务器端打印结果

Server getOrderById:23

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读