用CXF发布Web服务

1.下载apache-cxf-2.7.6jar包,并把lib目录下的所有jar包导入项目

2.编写测试的实体类,示例如下:

 1 package cn.bd.weather.entity;
 2
 3 import java.util.Date;
 4
 5 import javax.xml.bind.annotation.XmlRootElement;
 6 /**
 7  *
 8  * @author Administrator
 9  *   @XmlRootElement 表示根元素
10  */
11 @XmlRootElement(name="Weather")   //name属性默认是类名
12 public class Weather {
13     private String city;
14     private Date date;
15     private int min;
16     private int max;
17     private int average;
18     private String desc;
19
20     public Weather() {
21         super();
22     }
23     public Weather(String city, Date date, int min, int max, int average,
24             String desc) {
25         super();
26         this.city = city;
27         this.date = date;
28         this.min = min;
29         this.max = max;
30         this.average = average;
31         this.desc = desc;
32     }
33     public String getCity() {
34         return city;
35     }
36     public void setCity(String city) {
37         this.city = city;
38     }
39     public Date getDate() {
40         return date;
41     }
42     public void setDate(Date date) {
43         this.date = date;
44     }
45     public int getMin() {
46         return min;
47     }
48     public void setMin(int min) {
49         this.min = min;
50     }
51     public int getMax() {
52         return max;
53     }
54     public void setMax(int max) {
55         this.max = max;
56     }
57     public int getAverage() {
58         return average;
59     }
60     public void setAverage(int average) {
61         this.average = average;
62     }
63     public String getDesc() {
64         return desc;
65     }
66     public void setDesc(String desc) {
67         this.desc = desc;
68     }
69
70 }

3.编写服务接口,示例如下:

 1 package cn.bd.weather.service;
 2
 3 import java.util.Date;
 4 import java.util.List;
 5 import javax.jws.WebParam;
 6 import javax.jws.WebResult;
 7 import javax.jws.WebService;
 8
 9 import cn.bd.weather.entity.Weather;
10
11 @WebService(serviceName="WeatherService") //@WebService里面的targetNamespace="默认是包名"
12 public interface WeatherService {
13     @WebResult(name="out")
14     List<Weather> getWeathers(@WebParam(name="city")String city,@WebParam(name="dates")List<Date> dates);
15     //@WebParam(name="city")表示city参数的别名
16
17 }

4.编写服务接口的实现,示例如下:

 1 package cn.bd.weather.service.impl;
 2
 3 import java.util.ArrayList;
 4 import java.util.Date;
 5
 6 import java.util.List;
 7
 8 import javax.jws.WebMethod;
 9 import javax.jws.WebService;
10
11 import cn.bd.weather.entity.Weather;
12 import cn.bd.weather.service.WeatherService;
13
14 @WebService   //@WebService里面的targetNamespace=""
15 public class WeatherServiceImpl implements WeatherService {
16
17     @WebMethod   //注解为web服务方法
18     public List<Weather> getWeathers(String city, List<Date> dates) {
19         List<Weather> list=new ArrayList<Weather>();
20         for(Date date : dates){
21             list.add(getWeather(city,date));
22         }
23         return list;
24     }
25
26     @WebMethod(exclude=true)  //exclude=true 表示这个web方法不对外暴露
27     public Weather getWeather(String city,Date date){
28         return new Weather(city,date,25,27,30,"晴");
29     }
30
31 }

5.编写spring容器,示例如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans
 3     xmlns="http://www.springframework.org/schema/beans"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xmlns:p="http://www.springframework.org/schema/p"
 6     xmlns:jaxws="http://cxf.apache.org/jaxws"
 7     xsi:schemaLocation="http://www.springframework.org/schema/beans
 8                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
 9                         http://cxf.apache.org/jaxws
10                         http://cxf.apache.org/schemas/jaxws.xsd
11                         http://cxf.apache.org/bindings/soap
12                         http://cxf.apache.org/schemas/configuration/soap.xsd">
13     <!-- 引入CXF的文件 -->
14     <import resource="classpath:META-INF/cxf/cxf.xml"/>
15     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
16     <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
17
18     <!-- 定义发布web服务的类 -->
19     <bean id="weatherService" class="cn.bd.weather.service.impl.WeatherServiceImpl"></bean>
20
21     <!-- 配置Endpoint   端口 -->
22     <jaxws:endpoint id="wsServiceBean" implementor="#weatherService" address="getWeather" publish="true">
23     </jaxws:endpoint>
24
25     <!--
26         如何查看web服务是否了布成功
27         要在web.xml配置CXFServlet和装载spring容器
28         1.起动tomcat,在浏览器输入localhost:8090/CXFService/getWeather
29         其中getWeather 是配置Endpoint,属性address的值
30      -->
31 </beans>

6.web.xml的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="3.0"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 6     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 7   <display-name></display-name>
 8   <welcome-file-list>
 9     <welcome-file>index.jsp</welcome-file>
10   </welcome-file-list>
11
12   <context-param>
13       <param-name>contextConfigLocation</param-name>
14       <param-value>classpath:applicationContext.xml</param-value> <!-- 加载spring容器 -->
15   </context-param>
16   <listener>
17       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class><!-- 监听spring容器 -->
18   </listener>
19
20   <!-- 配置CXFServlet -->
21   <servlet>
22       <servlet-name>CXFServlet</servlet-name>
23       <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
24   </servlet>
25   <servlet-mapping>
26       <servlet-name>CXFServlet</servlet-name>
27       <url-pattern>/*</url-pattern>
28   </servlet-mapping>
29
30 </web-app>
时间: 2024-12-20 01:21:38

用CXF发布Web服务的相关文章

CXF调用web服务

1.进入apache-cxf-2.7.6\bin目录,按住shift键,鼠标右键点击选择:  在此处打开命令窗口 2.输入 wsdl2java url ,url是对外发布的端口  ,    发布web服务示例: http://www.cnblogs.com/taobd/p/6691871.html 3.把生成的java文件复制到项目,示例如下: 1 package cn.bd.client; 2 import java.util.Date; 3 import javax.xml.bind.ann

IIS7.0发布Web服务-0001

配置错误 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的 (overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的.  配置文件 \\?\X(盘符):\目录名\目录名\web.config<system.webServer>        <handlers

cxf发布 webservice服务

导包 antlr-2.7.7.jar aopalliance-1.0.jar asm-3.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-logging-1.1.1.jar cxf-2.4.2.jar cxf-manifest.jar cxf-xjc-boolean-2.4.0.jar cxf-xjc-bug671-2.4.0.jar cxf-xjc-dv-2.4.0.jar cxf-xjc-ts-2.4.0.ja

使用CXF发布webservice服务及注意要点

一.概念 1.什么是webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. 2.wsdl 网络服务描述语言是一个用来描述Web服务和说明如何与Web服务通信的XML(标准通用标记语言的子集)语言.为用户提供详细的接口说明书. 3.soap 简单对象访问协议是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子

CXF中Web服务请求处理流程

Web服务其本质上还是HTTP请求,只不过要遵循Web服务特定的规范,比如说服务端与客户端双方通信的媒介为XML文件格式,以完成对一次Web服务调用的描述.当然此XML还有特定的格式,至于这个特定的格式是什么样的取决于使用哪一种数据绑定方式.CXF中称这为数据绑定,个人觉得称之为Java对象的序列化与反序列化更易懂些. 本文将从源码(CXF版本为2.7.6)层面来分析一下CXF是如何完成对一个Web服务(SOAP类型为例)请求的处理的,注意这里分析的是请求的处理,并不包含这个请求是如何生成的,分

Apache发布web服务

服务器端:192.16.200.122(www.cxm.com)  DNS:192.168.200.122注:假设网站名称为www.cxm.com 1 发布默认路径下的基本网站(/var/www/html) (1)安装httpd软件包 [[email protected] ~]# rpm -qa | grep httpd  httpd-tools-2.2.15-15.el6_2.1.x86_64httpd-2.2.15-15.el6_2.1.x86_64 (2)编写测试页[[email prot

dubbo发布web服务实例

dubbo角色与调用执行过程 dubbo节点角色说明:provider: 暴露服务的服务提供方consumer: 调用远程服务的服务消费方registry: 服务注册于发现的注册中心monitor: 统计服务的调用次数和调用时间的监控中心container:服务运行容器 dubbo调用关系说明:1.服务容器负责启动,加载,运行服务提供者2.服务提供者在启动时,向注册中心注册自己提供的服务3.服务消费者在启动时,向注册中心订阅自己所需的服务4.注册中心返回服务提供者地址列表给消费者,如果有变更,注

windows amd64环境下使用arcpy发布web服务

通常在安装arcgis的时候,arcgis desktop与arcgis server应该是必备软件 但他们使用的python却不同,desktop使用32位,server使用64位. 为了能将arcpy生成的map document正常发布到server,python interpreter一定要使用64位,如果是32位环境,会出现两种情况: arcpy其他功能没问题,发布mxd时出现上传阻塞的情况 调用arcpy会出现DLL不是有效的win32执行程序之类的错误 综合之前碰到的问题,解决办法

客户端调用cxf发布的服务

import java.util.ArrayList; import java.util.List; import javax.xml.namespace.QName; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; public class Test { public static void main(String[] args) { JaxWsDynamicClientFactory dcf =