文档库 最新最全的文档下载
当前位置:文档库 › CXF框架webservice教程

CXF框架webservice教程

CXF框架webservice教程
CXF框架webservice教程

CXF框架实现webservice教程

1 使用CXF实现一个简单的WEB SERVICE

首先介绍如何用CXF实现一个基本的hello world

首先到apache官网去下载CXF的开发jar包

https://www.wendangku.net/doc/b217711942.html,//cxf/2.4.3/apache-cxf-2.4.3.zip

创建cxf webservice服务器端普通java项目,叫做HelloCxfServer,把必须用到的jar文件通过构建路径引入,为了省事,可以直接把所有的jar引入

此处注意:如果是jdk1.6启动服务器会发生如下错误

JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/javaLib/cxf_all_jar/jaxb-impl-2.2.1.1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader.

这是由于jdk1.6的jar包和cxf的jar包冲突造成的,

需要把cxf lib中的endorsed目录拷入到D:\Program Files\Java\jdk1.6.0\jre\lib目录下

创建一个接口HelloWorld和一个实现类HelloWorldImpl,只提供一个成员方法,叫做sayHello,给接口和实现类添加注解@WebService,这是最基本的注解

/test/HellWorld.java源码

package test;

import javax.jws.WebService;

@WebService

public interface HelloWorld {

String sayHello(String name);

}

/test/HelloWorldImpl.java源码

package test;

import javax.jws.WebService;

@WebService

public class HelloWorldImpl implements HelloWorld {

@Override

public String sayHello(String name) {

System.out.println("sayHello方法被调用...");

return"hello," + name;

}

}

CXF自带了一个Web Service容器Jetty,这是一个WEB容器,类似于tomcat,能够直接发布web service,下面创建一个发布服务类MainServer,执行这个类就会运行服务器,看到控制台输出日志信息,表示启动服务成功

/test/MainServier.java源码

package test;

import org.apache.cxf.endpoint.Server;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class MainServer {

public static void main(String[] args) {

//创建一个JaxWs服务器工厂

JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();

//设置发布类

factory.setServiceClass(HelloWorldImpl.class);

//设置服务发布的地址

factory.setAddress("http://localhost:6666/MyCxfService");

//根据设置创建一个服务器

Server server = factory.create();

//启动服务器

server.start();

}

}

发布成功以后,可以通过浏览器去查看生成的WSDL,

在浏览器地址栏输入http://localhost:6666/MyCxfService?wsdl,效果如下:

下面创建访问WebService的客户端,可以重新创建一个项目,也可以就在这个项目里实现,我下面在同一个项目中创建一个类HelloWorldCient

/test/HelloWorldClient.java源码

package test;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean;

public class HelloWorldClient {

public static void main(String[] args) {

//创建一个JaxWs的代理工厂

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

//设置访问地址

factory.setAddress("http://localhost:6666/MyCxfService");

//设置接口类型

factory.setServiceClass(HelloWorld.class);

//获得代理类实例

HelloWorld helloWorld = (HelloWorld) factory.create();

//调用方法

String str = helloWorld.sayHello("张三");

System.out.println(str);

}

}

运行客户端,会看到控制台,输出:hello,张三

2 WSDL结构分析

主要通过上一章生成的WSDL,来对WSDL语言的标签进行解释

Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML 语言。为用户提供详细的接口说明书。

查看刚才生成的WSDL,可以分析出以下的知识点:

wsdl:definitions:根标签

属性name="HelloWorldImplService":服务名称设置,HelloWorldImplService系统自动按照类名生成的,当然这个名字可以通过注解设置进行自定义

属性targetNamespace="http://test/" :名称空间设置,默认会用反写包名作为名称空间,例如,包名是com.icss.test,那么名称空间就是https://www.wendangku.net/doc/b217711942.html,/,通过注解设置也可以自定义

wsdl:types元素:使用某种语法(如XML 模式)的数据类型定义(string、int),描述了接口中方法的参数(输入参数)和返回值(输出参数)名称和类型

可以通过注解来给输入参数的名字和输出参数的名字进行自定义,默认是输出参数是return和第一个输入参数是arg0,被修改为sayHelloResult和name

@WebService

public interface HelloWorld {

@WebResult(name="sayHelloResult")String sayHello(@WebParam(name="name")String name);

}

wsdl:message元素:描述要传递的数据,web service是把请求和响应都包装成一个message来传递,客户端把请求封装成message传递给服务器,而服务器把响应封装成message发送回客户端

part元素:消息参数

wsdl:portType/ Interface元素:一个或多个端点支持的操作的抽象集。此名称已更改,因此可能会遇到两者中的任何一个。这个元素其实就是对应我们的接口。接口中的每一个方法被映射为一个Operation 元素

wsdl:binding元素:特定端口类型的具体协议和数据格式规范,设置协议,一般都是soap协议

wsdl:service元素:一个接口就是一个portType,如果我们有很多接口,那么就组成一个service,包含很多访问地址

3 WebService工作原理以及SOAP简介

Webservice工作原理大致流程:客户端向服务器端发出一个GET请求,然后响应的就是WSDL,告诉客户端有哪些暴露的接口功能可以调用。Webservice提供一个工具类,叫做WSDL2Java,可以根据WSDL 生成一系列的代理类。当客户端得到WSDL之后,就会向服务器端发出一个SOAP请求,这个SOAP请求就是一段XML,然后服务器端接收到SOAP请求,再对这个请求进行解析,然后再把请求的结果返回客户端。

在服务器端代码加入两个日志拦截器,可以看到每次请求和响应的日志信息,代码如下

//设置服务发布的地址

factory.setAddress("http://localhost:6666/MyCxfService");

//加入一个接收请求日志拦截器

factory.getInInterceptors().add(new LoggingInInterceptor());

//加入一个返回响应日志拦截器

factory.getOutInterceptors().add(new LoggingOutInterceptor());

//根据设置创建一个服务器

Server server = factory.create();

4 JAX-WS

JAX-WS规范是一组SUN公司提供的XML web services的标准JAVA API,主要提供两个包的类,分别是javax.jws和javax.jws.soap,例如@WebService就是这两个包中的注解

通过CXF下载包中bin目录中的wadl2java命令可以把一个wsdl文档转换为对应的java文件,这个就不掩饰了

5 JAXB

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java 表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。

主要功能就是把一个java对象映射成一段XML,也可以反向把一段XML映射为一个java文件

通过JAXB的一些注解可以对把一个java bean类转换为XML进行具体设置,例如哪些属性不转换啦,哪些方法做转换啦,等等

6 Spring和CXF整合

可用通过Spring来发布CXF的web serivce,但是这样就需要用到tomcat服务器,这样也会出现jar包冲突异常。

解决办法就是通过执行

system.out.println(System.getProperty("java.endorsed.dirs"));

找到相应位置,将jaxb-api-2.1.jar和jaxb-impl-2.1.12.jar放到对应目录下即可。没有endorsed目录,自己建一个。我的WEB项目中,打印出来的路径是:D:\Tomcat 6.0/common/endorsed,我直接把CXF包中的lib目录中的endorsed目录拷贝到D:\Tomcat 6.0/common中就好用了,没有common目录自己创建一个

具体搭配环境步骤:

1、创建项目CxfSpring,通过myeclipse引入Spring核心jar包和cxf的jar包

2、创建包中的接口和类,分别加上@WebService注解

com.cwj.test.Ihelloworld.java源码

package com.cwj.test;

import javax.jws.WebService;

@WebService

public interface IHelloWorld {

String sayHello(String name);

}

com.cwj.test.HelloWorldImpl.java源码

package com.cwj.test;

import javax.jws.WebService;

@WebService

public class HelloWorldImpl implements IHelloWorld {

@Override

public String sayHello(String name) {

System.out.println("sayHello方法被调用...");

return"你好," + name;

}

}

3、在WEB-INF目录下(或者是在src下)创建一个beans.xml配置文件,在这个配置文件中配置端点

beans文件名其实是自定义的,源码如下:

xmlns:xsi="https://www.wendangku.net/doc/b217711942.html,/2001/XMLSchema-instance"

xmlns:jaxws="https://www.wendangku.net/doc/b217711942.html,/jaxws"

xsi:schemaLocation="

https://www.wendangku.net/doc/b217711942.html,/schema/beans

https://www.wendangku.net/doc/b217711942.html,/schema/beans/spring-beans-3.0.xsd

https://www.wendangku.net/doc/b217711942.html,/jaxws

https://www.wendangku.net/doc/b217711942.html,/schemas/jaxws.xsd">

address="/HelloWorld">

如果是用配置端点方式2,那么就需要在的spring配置文件中定义bean类,其实这两个配置文件可以写成一个,也可以写成多个,不管几个文件反正都需要在web.xm文件中引用applicationContext.xml配置文件源码

xmlns="https://www.wendangku.net/doc/b217711942.html,/schema/beans"

xmlns:xsi="https://www.wendangku.net/doc/b217711942.html,/2001/XMLSchema-instance"

xmlns:p="https://www.wendangku.net/doc/b217711942.html,/schema/p"

xsi:schemaLocation="https://www.wendangku.net/doc/b217711942.html,/schema/beans

https://www.wendangku.net/doc/b217711942.html,/schema/beans/spring-beans-3.0.xsd">

4、在web.xml文件中配置初始化spring容器和cxf的核心servlet

web.xml源码

xmlns:xsi="https://www.wendangku.net/doc/b217711942.html,/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.wendangku.net/doc/b217711942.html,/xml/ns/javaee

https://www.wendangku.net/doc/b217711942.html,/xml/ns/javaee/web-app_2_5.xsd">

contextConfigLocation

classpath:applicationContext.xml,WEB-INF/beans.xml

org.springframework.web.context.ContextLoaderListener

http://localhost:7777/CxfSpring/service/

而写成/*,表示服务地址根目录是http://localhost:7777/CxfSpring/

-->

CXFServlet

org.apache.cxf.transport.servlet.CXFServlet

1

CXFServlet

/service/*

index.jsp

这时候打开浏览器输入http://localhost:7777/CxfSpring/service,访问service根目录,可以看到service信息列表

点击service链接,可以看到service的wsdl

下面创建一个客户端项目CxfSpringClient,引入spring核心jar包和cxf所有jar包,利用spring去访问webservice

1、创建com.cwj.test.IhelloWorld接口,注意包名和服务器端IHelloWorld接口包名一致,代码一致

2、在类路径下创建spring 配置文件,定义要访问的服务地址和服务接口

beans.xml源码

xmlns:xsi="https://www.wendangku.net/doc/b217711942.html,/2001/XMLSchema-instance"

xmlns:jaxws="https://www.wendangku.net/doc/b217711942.html,/jaxws"

xsi:schemaLocation="

https://www.wendangku.net/doc/b217711942.html,/schema/beans

https://www.wendangku.net/doc/b217711942.html,/schema/beans/spring-beans-3.0.xsd

https://www.wendangku.net/doc/b217711942.html,/jaxws

https://www.wendangku.net/doc/b217711942.html,/schemas/jaxws.xsd">

id="helloWorldClient"

address="http://localhost:7777/CxfSpring/service/HelloWorld"

serviceClass="com.cwj.test.IHelloWorld"/>

3、创建一个测试类Client,通过Spring容器获得service接口代理类实例,调用远程方法

client.Client.java源码

package client;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cwj.test.IHelloWorld;

public class Client {

public static void main(String[] args) {

ApplicationContext context = new

ClassPathXmlApplicationContext("beans.xml");

IHelloWorld helloWorld = (IHelloWorld)

context.getBean("helloWorldClient");

String str = helloWorld.sayHello("tom");

System.out.println(str);

}

}

至此,CXF框架实现Spring全部结束

陈伟俊

2011年11月2日星期三

CXF WebService中传递复杂对象(List、Map、Array)

CXF WebService中传递复杂对象 前面一篇文章介绍的都是传递简单的字符串,现在开始介绍传递复杂类型的对象。如JavaBean、Array、List、Map等。 如有不正确之处,请各位给予指出! 1、首先看看服务器端的代码所需要的JavaBean对象 Java代码 1.package com.wy.object.entry; 2. 3.import java.io.Serializable; 4. 5./** 6.* User Entity 7.* @author Administrator 8.* 9.*/ 10.public class User implements Serializable { 11. 12.private static final long serialVersionUID = 1L; 13. 14.private int id; 15.private String name; 16.private String email; 17.private String address; 18. 19.public int getId() { 20.return id; 21.} 22. 23.public void setId(int id) { 24.this.id = id; 25.} 26. 27.public String getName() { 28.return name; 29.} 30. 31.public void setName(String name) { https://www.wendangku.net/doc/b217711942.html, = name; 33.}

34. 35.public String getEmail() { 36.return email; 37.} 38. 39.public void setEmail(String email) { 40.this.email = email; 41.} 42. 43.public String getAddress() { 44.return address; 45.} 46. 47.public void setAddress(String address) { 48.this.address = address; 49.} 50. 51.@Override 52.public String toString() { 53. 54.return this.id + " - " + https://www.wendangku.net/doc/b217711942.html, + " - " + this.address + " - " 55.+ this.email; 56. 57.} 58.} 下面的是集合传递Users,CXF直接传递集合对象会出现异常,用一个对象包装下就Ok了,不知道是什么原因。 Java代码 1.package com.wy.object; 2. 3.import java.util.HashMap; 4.import java.util.List; 5. 6.import https://www.wendangku.net/doc/b217711942.html,er; 7. 8./** 9.* CXF直接传递集合对象会出现异常,用一个对象包装下就Ok了,不知 道是什么原因? 10.* 11.* @author Administrator 12.* 13.*/

EBS中发布WEBSERVICE接口的方法

在Oracle EBS二次开发中,PL/SQL程序是开发人员使用频率最高的开发语言,同时也是大家最容易掌握的工具之一了,而我们也很希望将自己编写的PL/SQL 程序发布为Web服务来提供给客户端程序使用,同时也可以实现和外围系统的集成,有了irep_parser这个工具,我们就可以将自己编写的PL/SQL 程序发布到Oracle Integration Repositoy中。Oracle Integration Repositoy中集成接口的来源都是Oracle,客户化的程序发布上去的为Custom: 下面描述如何将PL/SQL程序接口发布到Oracle Integration Repositoy中作为集成接口供第三方程序集成调用 一、给EBS系统打补丁 参考如下安装文档: 安装文档.docx 二、添加客户化应用到Product Family 客户化应用设置好之后,它没有归属于任何的产品家族,如我的客户化应用CUX,因此发布在客户化应用下的集成接口在Oracle Integration Repositoy中无法方便的查看,如下图:

如果客户化集成接口是组织到自己的应用下就需要先注册一个产品家族,下面将CUX Developer(CUX) 应用注册到CUX Developer(cux_pf)这个产品家族下作为例子进行演示: 1,添加产品家族 CUX Developer(cux_pf) --添加产品家族 begin -- Call the procedure ad_pa_insert_package.insert_ad_pm_product_info(x_product_abbreviation => 'cux_pf', x_pseudo_product_flag => 'N', x_product_family_flag => 'Y', x_application_short_name => NULL, x_product_name => 'CUX Developer', x_product_family_abbreviation => NULL, x_product_family_name => NULL, x_aru_update_date => to_char(SYSDATE,'YYYY-MM-DD HH24:MI:SS'), x_currdate => to_char(SYSDATE,'YYYY-MM-DD HH24:MI:SS'), x_last_updated_by => -1, x_created_by => -1); COMMIT; end; 2,注册CUX Developer(CUX)应用到产品家族中

c#-操作webservice(经典入门教程)

Web Service 的基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件(服务),使用WSDL文件进行(说明),并通过(UDDI)进行注册。 XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。 Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP 调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。 WSDL:(Web Services Description Language) WSDL 文件是一个XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。 UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。 概念补充: http soap关系 http:是一个客户端和服务器端请求和应答的标准(TCP)。http协议其目的是为了提供一种发布和接收htttp页面的方法 一http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

SAP开发webservice接口教程

SAP开发webservice接口教程 在client=100中进行开发: 1.创建RFC函数 SE80,在函数组下,右击->创建,创建函数模块,填写函数模块名称及描述。 2.函数属性标签页,选择“远程启用的模块”,其余默认不变。 3.函数导入标签页,需要添加调用时传入的参数(表),“传递值”需勾选。 表类型:ZSHR_EMPLOYEER_T (需要自己创建) 行类型:ZSHR_EMPLOYEER (需要自己创建)

4.函数导出标签页,需要添加调用返回的参数(表),“传递值”需勾选。 表类型:ZSHR_EMPLOYEER_OUT_T (需要自己创建) 行类型:ZSHR_EMPLOYEER_OUT (需要自己创建) 5.函数源代码标签页,需要写代码实现把传入的数据保存在透明表中。 至此,函数创建完成。 6.创建Web Services 右击包名创建企业服务,进入如下页面,选择“Service Provider”,因为我们是服务提供者,点击“继续”。

7.选择“Existing ABAP Object (Inside Out)”,点击“继续”。 8.给服务起名,并填写描述,点击“继续”

9.选择“Function Module”,点击“继续”。 10.填写我们第一步创建的函数,并勾选“Map Name”,点击“继续”。 11.SOAP Appl默认不变,Profie下拉框选择第四个选择,即不进行权限认证。点击“继续”。 12.填写对于的包和请求,点击“继续”。 下一步,直接点击“完成”。服务创建成功。

13.配置SOA 使用T-CODE:soamanager,进入web页面的SOA管理(client=100)。 14.点击“简化Web服务配置”,进入如下设置页面,点击“执行”,从列表中找到自己创建的 服务,勾选第一个checkbox,User Name/Password(basic),点击列表左上角的“保存”,之后页面右上角的“返回”按钮,返回首页。 这一步设置,代表我们只设置用户名/密码的调用认证方式。

基于spring+cxf实现用户文件传输的webservice

基于spring+cxf实现用户文件传输的webservice 1 引言 在EDI系统中,用户数量较多,并且信息化水平差距较大,所以对报文的收发方式具有多样化的需求。相对其他访问方式而言,http(s)的访问在防火墙限制、安全性等方面都有较好表现。因此,有相当部分用户提出通过webservice发送报文的需求。本文介绍了如何采用cxf 结合spring框架实现具有文件上传和相关查询功能的webservice,以便其在使用.net或其他框架开发的MIS系统中能够自动生成报文并上传。同时,该webservice还提供了用户基本身份验证功能,对访问请求进行限制。 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。 2.功能分析 (1)该webservice需要提供报文上传到服务器上的基本功能。 (2)用户可以查询已经发送的报文历史信息列表,包括报文名称、报文大小和发送时间。 (3)由于不是开放服务,所以还需要对用户身份进行基本认证。 3.服务构建 (1)定义要提供的服务接口 首先要定义webservice输入输出的数据类型,主要包括报文名称、报文类型、报文发送时间以及处理文件流的DataHandler属性。代码片段如下:

Webservice接口开发

Webservice接口开发 Author:Geloin

目录 1 准备工作 (1) 2 服务器端 (1) 2.1 主程序 (1) 2.2 services.xml (2) 2.3 传值方式 (3) 2.4 打包 (4) 2.5 发布 (6) 3 客户端 (8) 3.1 导入包 (8) 3.2 示例代码 (8) 3.3 代码解析 (10) 3.3.1 设定服务器地址 (10) 3.3.2 设定action (10) 3.3.3 设定要调用的方法名 (11) 3.3.4 设定客户端控件 (11) 3.3.5 设定命名空间 (11) 3.3.6 设定需要传送的值 (11) 3.3.7 设定返回数据类型 (11) 3.3.8 获取返回结果 (12)

1准备工作 至https://www.wendangku.net/doc/b217711942.html,/axis2/下载axis2的bin及war包,分别解压之,在环境变量中添加AXIS2_HOM,将axis2.war放置到tomcat/webapps目录下,启动tomcat,用浏览器打开http://localhost:8080/axis2,如下图所示: 2服务器端 2.1主程序 服务器端可以是任何一个程序,例如下面的例子: public class Test { // 此程序返回一个字符串 public String test1(String arg) { return arg + “测试”; } // 此程序返回一个一维数组 public String[] test2(String arg) { String[] result = new String[]{arg}; return result;

CXF实现WebService

使用Apache CXF实现Web Service 1.Web service的概念 什么是Web Service呢?从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。Web Service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用你喜欢的任何语言,在你喜欢的任何平台上写Web Service。Web Service是构建互联网分布式系统的基本部件。"网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。 举例来说,写一个“四川大地震图片墙”,它能动态显示关于四川地震的最新图片。但是,所有的图片都不是储存在自己的服务器上,而是来自https://www.wendangku.net/doc/b217711942.html,。只需要发出一个动态请求,要求https://www.wendangku.net/doc/b217711942.html,向自己提供图片。这种情况下,https://www.wendangku.net/doc/b217711942.html,提供的就是一种Web service。如果把图片都存放在本地服务器,不调用https://www.wendangku.net/doc/b217711942.html,,那么我就是在使用“本地服务”。 所以,Web service让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。 2.Web Service架构和云 如果一个软件的主要部分采用了“网络服务”,即它把存储或计算环节“外包”给其他网站了,那么我们就说这个软件属于Web Service架构。 Web Service架构的基本思想,就是尽量把非核心功能交给其他人去做,自己全力开发核心功能。比如,如果你要开发一个相册软件,完全可以使用Flickr的网络服务,把相片都储存到它上面,你只要全力做好相册本身就可以了。总体上看,凡是不属于你核心竞争力的功能,都应该把它“外包”出去。 最近很红的“云计算”(cloud computing)或者“云服务”(cloud services),实际上就是Web Service的同义词,不过更形象一些罢了。它们不说你把事情交给其他计算机去做,而说你把事情交给“云”去做。 3.Web Service的优势 Web Servcie最主要的优点是,使用不同程序和在不同系统平台上开发出来的程序,都可以相互通信。SOAP作为Web Service的基本通信协议,简单,投入和使用的代价也很小。

ABAP外调WebService过程的介绍

第一章proxy(代理)的生成 首先通过se80进入到我们要创建proxy(代理)的package(包)。以我的zhr_password_change程序为例,该程序的目的是帮助用户修改密码,所以进入的是ZHR包。 进入ZHR包后,右键选择Create -> Enterprise Service / Web Service -> Proxy Object,弹出如下选择框:

由于我们是外调Web Service,所以选择Service Consumer选项,并点击继续。随后出现下面的选择界面: 这个选择界面中,如果我们自己的机器就是服务器,那么可以选择Local File,然后给出WSDL文件所在地。不过

一般情况下,我们是通过URL/HTTP访问WSDL文件的。这里,我得到的WSDL文件地址为: http://10.3.11.123/jfids/ChangePwService?wsdl 我们需要先确认这个链接的有效性,可以在浏览器中打开这个链接,如果链接有效,则我们可以看到对应的xml 代码: 将有效的URL地址输入,点击继续,如图:

接下来要选择package(包)和prefix(前缀),package即proxy(代理)所在的包,prefix即代理各种属性(比如名称)、包含数据类型(比如输入数据类型、输出数据类型)等的前缀,主要用于与系统变量进行区分。我这里选择的包是ZHR、前缀为ZCMIS_。

输入包名、前缀后选择继续,此时会出现确认信息: 完成后,会看到workbench request,设置请求号和描述: 然后我们会发现package(包)里出现了Enterprise Service选项,里面包含了代理类及其用到的数据类型。我们需要保存并激活Enterprise Service选项:

通过CXF开发webService接口(soap协议、maven项目)

1. 引入cxf的jar包 pom文件里面直接增加依赖 < dependency> junit junit 4.11 test org.springframework spring- webmvc 4.0.0.RELEASE org.apache.cxf apache-cxf 2.4.3 pom 2. 配置web.xml文件 < web-app xmlns= "https://www.wendangku.net/doc/b217711942.html,/xml/ns/javaee" xmlns:xsi= "https://www.wendangku.net/doc/b217711942.html,/2001/XMLSchema-instance" xsi:schemaLocation= "https://www.wendangku.net/doc/b217711942.html,/xml/ns/javaee https://www.wendangku.net/doc/b217711942.html,/xml/ns/javaee/web-app_3_1.xsd" version= "3.1" > < display-name >Archetype Created Web Application < context-param > contextConfigLocation classpath:config/spring/metadata WebService-spring.xml org.springframework.web.conte xt.ContextLoaderListener

学习CXF WebService入门实例一

最近开发开始学习Web Service,如果你是大神,请路过!谢谢!遵循前辈大神们的教导~~~,内事不决问度娘,外事不决问谷歌(现在谷歌已经不能用了),只能问度娘了!上网一百度,套用周董的一句歌词,霍,霍,霍,霍,这么多的套路(axis,axis2,XFire,CXF等),我到底选择哪一个?因为要和Spring进行对接,看了一下,CXF与Spring的耦合度最好,于是就选择了CXF。上官网下jar包,下了最新的apache-cxf-3.1.4.zip包。解压出来,看看里面的最简单的实例,apache-cxf-3.1.4\samples\java_first_jaxws,本着你快乐所以我快乐加上不要脸的原则,我抄抄抄,改了一下名字,开发环境jdk1.6, jdk1.5没试过,上眼呐! 新建工程mywbs,导入jar包 cxf-core-3.1.4.jar jetty-continuation-9.2.11.v20150529.jar jetty-http-9.2.11.v20150529.jar jetty-io-9.2.11.v20150529.jar jetty-server-9.2.11.v20150529.jar jetty-util-9.2.11.v20150529.jar wsdl4j-1.6.3.jar xmlschema-core-2.2.1.jar 一、接口类IHelloWorld.java package com.ws.hello; import java.util.List; import javax.jws.WebService; import https://www.wendangku.net/doc/b217711942.html,ers; @WebService public interface IHelloWorld { public String sayHello(String name); public String getUserName(Users user); public List getListUser(); } 二、实现类(说明endpointInterface = "com.ws.hello.IHelloWorld",IHelloWorld 类加上路径,此处注意)HelloWorldImpl.java package com.ws.hello; import java.util.ArrayList; import java.util.List; import javax.jws.WebService; import https://www.wendangku.net/doc/b217711942.html,ers; @WebService(endpointInterface = "com.ws.hello.IHelloWorld",serviceName = "IHelloWorld", portName="IHelloWorldPort") public class HelloWorldImpl implements IHelloWorld { @Override public String sayHello(String name) { return name + ": 您好啊!";

Axis2从入门到精通--Webservice在eclipse下开发教程

Axis2 教程 文章分类:Java编程 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。这些都将在后面的系列教程中讲解。在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。 一、Axis2的下载和安装 读者可以从如下的网址下载Axis2的最新版本: https://www.wendangku.net/doc/b217711942.html,/axis2/ 在本文使用了目前Axis2的最新版本1.4.1。读者可以下载如下两个zip包: axis2-1.4.1-bin.zip axis2-1.4.1-war.zip 其中axis2-1.4.1-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.4.1-war.zip文件用于将WebService发布到Web容器中。 将axis2-1.4.1-war.zip文件解压到相应的目录,将目录中的axis2.war 文件放到\webapps目录中(本文使用的Tomcat的版本是 6.x),并启动Tomcat。 在浏览器地址栏中输入如下的URL: http://localhost:8080/axis2/ 如果在浏览器中显示出如图1所示的页面,则表示Axis2安装成功。 图1

二、编写和发布WebService 对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。其中POJO中所有的public方法将被发布成WebService方法。 下面我们来实现一个简单的POJO,代码如下: public class SimpleService { public String getGreeting(String name) { return "你好 " + name; } public int getPrice() { return new java.util.Random().nextInt(1000); } }

Eclipse+CXF开发Web服务、Tomcat部署

一、下载CXF包,apache-cxf-2.6.1.tar.gz,解压后得到文件夹apache-cxf-2.6.1 图1 二、创建服务端 1、新建Dynamic Web Project File—New—Project—Web—Dynamic Web Project; 工程命名后Next,将“Default output folder”改为WebContent/WEB-INF/classes,Next; 勾选“Generate web.xml deployment discriptor”。

图2

图3 图4 2、将解压后apache-cxf-2.6.1文件夹lib文件夹中的JAR文件导入工程下WebContent/WEB-INF/lib中,或直接复制到相应文件夹下,刷新工程。 3、创建服务接口 工程右键—New—Interface,添加代码: package com.yxj; import javax.jws.WebService; import javax.jws.WebParam; import javax.jws.WebMethod; @WebService public interface IcxfWB { @WebMethod String sayHello(@WebParam(name="name") String name); } 说明:“@WebService”标记表示该接口是一个WebService服务,@ WebMethod标记表示WebService中的方法;@WebParam(name="paramName")

表示方法中的参数,name属性限制了参数的名称,若没有指定该属性,参数将会被重命名。 4、创建服务实现类 package com.yxj; public class CxfWBImpl implements IcxfWB { public String sayHello(String name) { return"Hello "+name; } } 5、编辑WebContent/WEB-INF下web.xml文件 CXFService contextConfigLocation WEB-INF/service-beans.xml org.springframework.web.context.ContextLoaderListener CXFServlet org.apache.cxf.transport.servlet.CXFServlet CXFServlet /* 其中,指定了spring的相应配置,在中指定了配置文件的位置;下的指明了服务访问时地址的形式,“/*”代表URL地址中,包名称后直接跟服务endpoint地址,若指明为“/webservice/*”,则URL为包名/ webservice/endpoint?wsdl。

webservice接口开发

Eclipse 关于接口系统的开发 我们做接口服务端: 小知识: 接口分为:服务端与客户端 服务端:即提供者,是为调用者提供数据的一方; 客户端:即调用者,是调用接口的一方; <一> 服务端的创建 步骤1. 在eclipse新建一个普通工程,例如:新建一个web project 工程。 步骤2.创建完成后,在刚才新建的工程里面,加入我们需要实现的类,和接口。在实现类里面编写客户端传入参数后,需要的相关信息。 例如: Public String sayHello(String word) { Return word; } 步骤3. 进入服务端代码的自动生成阶段,我们选中刚才编写的实现类或是创建的工程,右键。选择,new→project…→other→,如下图,选择web service 服务端。点击next

步骤4.根据下图,通过选择实现类,点击完成。自动生成服务端了。

步骤5 .前4步骤已经完成了webservice的服务端,并已经自动启动好了,我们进行如下测试,访问下自动产生的wsdl文件是否能访问到: 例如:访问wsdl地址示例 http://10.1.159.28:8082/ICTS/services/GetWorkflowListDaoImp?wsdl 其中:GetWorkflowListDaoImp 为自己创建的实现类名称 <二>客户端的创建,测试我们完成的服务端接口:

步骤1. 创建一个普通的web project 工程 步骤2. 创建完成后,选中,我们创建的工程,右键→,new→other→,创建web service cliet 客户端,完成后,点击finish。完成 步骤3。我们通过客户端进行调用,测试一下服务端是否正常。通过如下示例地址:http://10.1.159.28:8082/test1/sampleGetWorkflowListDaoImpProxy/TestClient.jsp, 这是客户端为我们自动建立的测试页面,我们只需输入参数,就可以进行测试了。界面如下:

基于TA+3webservice开发文档

Cxf WebService 整合Ta+3 1、需导入的jar包: 2、Web.xml配置: CXFServlet org.apache.cxf.transport.servlet.CXFServlet 1 CXFServlet /services/* 3、在config/bs下面建一个spring-cxf.xml,配置发布webservice

Webservice的应用与开发试卷

南京工业大学WebService的应用与开发试题(A)卷班级学号姓名 一、判断题(正确的打勾,错误的打叉,每题2分) 1.SOAP(Simple Object Access Protocol)协议是一个基于Xml的协议。它描述了数据类型的消 息格式以及一整套串行化规则,包括结构化类型和数组。(o) 2.客户端与Xml Web服务进行异步通信,向服务端发出服务请求的方法与接收web服务返回 的结构在同一线程中(e) 3.基于消息的体系的分布式应用中,可以使用异步消息处理也可以使用同步消息处理(o) 4.Web服务中使用SOAP表示数据的优点是SOAP提供了一种所有平台都支持的中间表示方 式,客户端只要将SOAP类型转换为自身平台可以理解的类型即可(o) 5.分布式应用程序节点越多,单点失败的可能性越大,整个系统发生故障的可能性越大(o) 6.Apache CXF为java WebService的一个框架,可以用它提供的命令行工具wsdl2java生成客 户端的代理类(o) 7.Xml DTD提供了一种避免元素名冲突的方法(e) 8.所有Xml文件只有一个根元素且不分大小写(e) 9.每个Xml文档分为两个部分:序言和文档元素。(o) 10.都是WSDL文档的关键元素。( e ) 11.XML Web服务的交互可以使用Internet协议中所有的协议( e ) 12.对于Web服务的请求可以穿越防火墙( o ) 13.ajax可以跨域访问Web服务( o ) 14.元素在WSDL中用于描述操作的引用输入/输出消息( o ) 15.元素在WSDL中用于描述交互中已经被定义了类型的数据( o ) 二、选择题(单、多项选择,每题2分) 1.Web Service需要以下哪些技术、协议的支持(ABCD ) A.HTTP B.SOAP C.XML D. T CP/IP 2.下列选项中,哪个是XML合法的元素名(A ) A.TOM

cxf+spring发布webservice接口及接口的调用

一、CXF介绍 Apache CXF=Celtix+XFire,Apache CXF的前身叫Apache CeltiXfire。CXF继承了Celtix和XFire两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种Binding、DataBinding、Transport以及各种Format的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者WSDL优先(WSDL First)来轻松地实现Web Services的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。CXF支持多种协议,如:SOAP、XML/HTTP、RESTful HTTP、CORBA,并且可以在多种传输协议上运行,比如:HTTP、JMS、JBI。CXF可以与Spring进行无缝集成。 CXF框架是一种基于Servlet技术的SOA应用开发框架,要正常运行基于CXF应用框架开发的企业应用,除了CXF框架本身之外,还需要JDK和Servlet容器的支持。 CXF下载地址:https://www.wendangku.net/doc/b217711942.html,/download.html,选择“File”列中的zip格式下载。解压后可以看到一些文件夹: └─apache-cxf-2.5.0 ├─bin各种工具 ├─docs API文档 ├─etc各种配置文件 ├─lib开发所需jar包 ├─licenses说明 ├─modules jar包 └─samples使用例子 samples文件夹中给提供了在各种环境下使用的例子,个人感觉只需参照样例即可。 二、使用CXF+Spring编写并发布WebService 首先,新建一个Web项目,名字叫cxftest,将下载的压缩包中lib文件夹下的jar包全部拷贝到项目的WEB-INF/lib中,在web.xml中配置如下: [html]view plaincopy 1. 2.CXFServlet

常用的webservice接口

商业和贸易: 1、股票行情数据WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询) Endpoint:https://www.wendangku.net/doc/b217711942.html,/WebServices/StockInfoWS.asmx Disco:https://www.wendangku.net/doc/b217711942.html,/WebServices/StockInfoWS.asmx?disco WSDL:https://www.wendangku.net/doc/b217711942.html,/WebServices/StockInfoWS.asmx?wsdl 支持香港股票、深圳、上海封闭式基金、债券和股票;支持多股票同时查询。数据即时更新。此中国股票行情数据WEB 服务仅作为用户获取信息之目的,并不构成投资建议。支持使用| 符号分割的多股票查询。 2、中国开放式基金数据WEB 服务 Endpoint:https://www.wendangku.net/doc/b217711942.html,/WebServices/ChinaOpenFundWS.asmx Disco:https://www.wendangku.net/doc/b217711942.html,/WebServices/ChinaOpenFundWS.asmx?disco WSDL:https://www.wendangku.net/doc/b217711942.html,/WebServices/ChinaOpenFundWS.asmx?wsdl 中国开放式基金数据WEB 服务,数据每天15:30以后及时更新。输出数据包括:证券代码、证券简称、单位净值、累计单位净值、前单位净值、净值涨跌额、净值增长率(%)、净值日期。只有商业用户可获得此中国开放式基金数据Web Services的全部功能,若有需要测试、开发和使用请QQ:8698053 或联系我们 3、中国股票行情分时走势预览缩略图WEB 服务 Endpoint: https://www.wendangku.net/doc/b217711942.html,/webservices/ChinaStockSmallImageWS.asmx Disco: https://www.wendangku.net/doc/b217711942.html,/webservices/ChinaStockSmallImageWS.asmx?disco WSDL: https://www.wendangku.net/doc/b217711942.html,/webservices/ChinaStockSmallImageWS.asmx?wsdl 中国股票行情分时走势预览缩略图WEB 服务(支持深圳和上海股市的全部基金、债券和股票),数据即时更新。返回数据:2种大小可选择的股票GIF分时走势预览缩略图字节数组和直接输出该预览缩略图。 4、外汇-人民币即时报价WEB 服务 Endpoint: https://www.wendangku.net/doc/b217711942.html,/WebServices/ForexRmbRateWebService.asmx Disco:https://www.wendangku.net/doc/b217711942.html,/WebServices/ForexRmbRateWebService.asmx?disco

相关文档
相关文档 最新文档