(axis,xfire)WebServices发布与调用

(axis,xfire)WebServices发布与调用
(axis,xfire)WebServices发布与调用

目录

一使用Axis和XFire发布Web Service (2)

1.1 准备工作 (2)

1.1.1 新建工程 (2)

1.1.2 axis依赖文件 (3)

1.1.3 XFire依赖文件 (3)

1.2 Axis发布Web Service (4)

1.2.1 传递简单数据类型的Web Service (4)

1.2.2 带自定义对象传递的Web Service (8)

1.3 XFire发布Web Services (10)

1.3.1 传递简单数据类型的Web Service (10)

1.3.2传递复杂数据类型的Web Service (12)

附录: 1Server的结构 (16)

二调用Web Services (17)

2.1 准备工作 (17)

2.1.1 新建工程 (17)

2.1.2 启动Tomcat上发布的1Server服务 (17)

2.2 Axis发布的Web Service调用方式 (18)

2.2.1 Dynamic Invocation Interface (DII)方式 (18)

2.2.2 Dynamic Proxy方式 (19)

2.2.3 Stubs方式 (20)

2.3调用XFire发布的Web Service (22)

2.3.1服务以jar包形式发布的时候直接调用 (23)

2.3.2 使用Axis的Client包 (23)

2.3.3 使用Xfire的Client包 (24)

附录2:2Client目录结构 (31)

一使用Axis和XFire发布Web Service 1.1 准备工作

Axis主页:https://www.360docs.net/doc/8c8368103.html,/

Axis下载:https://www.360docs.net/doc/8c8368103.html,/dist/ws/

XFire主页:https://www.360docs.net/doc/8c8368103.html,/

XFire下载:https://www.360docs.net/doc/8c8368103.html,/Download

去以上站点下载axis最新包和XFire最新包,包内有axis和XFire依赖的其他jar包。

1.1.1 新建工程

1.1.2 axis依赖文件

1.1.3 XFire依赖文件

1.2 Axis发布Web Service

1.2.1 传递简单数据类型的Web Service

1.把Axis依赖的jar包放入lib文件夹下.

2.在web.xml中加入如下:

org.apache.axis.transport.http.AxisHTTPSessionListener

AxisServlet

org.apache.axis.transport.http.AxisServlet

AdminServlet

org.apache.axis.transport.http.AdminServlet

100

SOAPMonitorService

org.apache.axis.monitor.SOAPMonitorService

SOAPMonitorPort

5001

100

AxisServlet

/servlet/AxisServlet

AxisServlet

*.jws

AxisServlet

/services/*

SOAPMonitorService

/SOAPMonitor

5

wsdl

text/xml

xsd

text/xml

3.发布到Tomcat5.0+ 启动Tomcat服务

启动的时候若出现下面错误。

这个是因为配置文件没有,没有关系。

访问http://localhost:8080/1Server/servlet/AxisServlet查看Axis是否配置成功。

出现该图表示配置成功。

4.新建HelloAxis.java文件

package https://www.360docs.net/doc/8c8368103.html,.freshpower.services;

public class HelloAxis {

public String sayHello(String name){

System.out.println("------------axis1 被调用---------");

return"Hello! "+name;

}

}

5.在工程下新建deploy.wsdd文件

内容如下:

xmlns:java="https://www.360docs.net/doc/8c8368103.html,/axis/wsdd/providers/java">

在同目录下新建deploy.bat批处理文件,内容如下:

@echo.

@echo 生成的server-config.wsdd在Tomcat发布的应用下

@echo.

set Axis_Lib=D:\projects\1Server\webapp\WEB-INF\lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Axis_Servlet=http://localhost:8080/1Server/servlet/AxisServlet

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd @pause

运行deploy.bat文件

6.在执行完后去%TOMCAT_HOME%\webapps\1Server\WEB-INF 文件夹下找到

server-config.wsdd文件,把该文件复制到1Server\webapp\WEB-INF下。

我们打开该文件可以看到下面段落:

这就是我们刚才发布的web service的描述段落。

7.刷新http://localhost:8080/1Server/servlet/AxisServlet查看Web Service列表。

点击(wsdl)可以查看该Web Service对应的wsdl文件。

1.2.2 带自定义对象传递的Web Service

1.新建User.java文件

package https://www.360docs.net/doc/8c8368103.html,.freshpower.bean;

public class User {

public User(){

}

public User(String name,String age){

https://www.360docs.net/doc/8c8368103.html, = name;

this.age = age;

}

public String name;

public String age;

public String getName() {

return name;

}

public void setNam e(String name) {

https://www.360docs.net/doc/8c8368103.html, = name;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

}

2.新建HelloAxisObj.java

package https://www.360docs.net/doc/8c8368103.html,.freshpower.services;

import java.util.ArrayList;

import java.util.List;

import https://www.360docs.net/doc/8c8368103.html,er;

public class HelloAxisObj {

public User getUser(User user){

System.out.println("------------------axis2 被调用----------------");

user.setName("ujjboy");

user.setAge("22");

return user;

}

public List getList(){

System.out.println("------------------axis2 被调用----------------");

List list =new ArrayList();

list.add("aaaaaaa");

list.add("bbbbbbb");

list.add("ccccccc");

return list;

}

}

3.我们可以直接修改server-config.wsdd文件来发布Web Service。

直接插入下面段落来发布。

value="https://www.360docs.net/doc/8c8368103.html,.freshpower.services.HelloAxisObj"/>

4.重启Tomcat服务器。

5.刷新http://localhost:8080/1Server/servlet/AxisServlet查看Web Service列表。

点击(wsdl)可以查看该Web Service对应的wsdl文件。

1.3 XFire发布Web Services

1.3.1 传递简单数据类型的Web Service

1.把XFire依赖的jar包放入lib文件夹下。

2.在web.xml中加入如下代码:

XFireServlet

org.codehaus.xfire.transport.http.XFireConfigurableServlet

0

XFireServlet

/servlet/XFireServlet/*

XFireServlet

/service/*

3.编写程序代码

首先编写一个功能的接口类。

package https://www.360docs.net/doc/8c8368103.html,.freshpower.services;

public interface HelloXfire {

public String sayHello(String name);

}

再编写一个功能的接口实现类。

package https://www.360docs.net/doc/8c8368103.html,.freshpower.services;

public class HelloXfireImpl implements HelloXfire{

public String sayHello(String name) {

System.out.println("------------------xfire1 被调用----------------");

return"Hello! "+name;

}

}

4.在src下或者直接在webapp\WEB-INF下创建一个文件夹META-INF,在

META-INF下边在创建一个目录xfire,在xfire目录里边创建一个services.xml 文件,内容如下:

HelloXfire

https://www.360docs.net/doc/8c8368103.html,

https://www.360docs.net/doc/8c8368103.html,.freshpower.services.HelloXfire

https://www.360docs.net/doc/8c8368103.html,.freshpower.services.HelloXfireImpl

5.重启Tomcat服务出现如下图加载信息代表发布正确完成。

6.访问http://localhost:8080/1Server/service/查看Web Service列表和wsdl文

件。

点击[wsdl]就可以查看它的wsdl描述文件。

1.3.2 传递复杂数据类型的Web Service

1.了解XFire的绑定机制Aegis

首先说明,Aegis为XFire默认的绑定方式,那么何时需要绑定?

Aegis支持的类型

1).基本类型:int,double,float,long,byte[],short,String,decimal

2).数组(Array)

3).集合类型(Collection)

4).日期类型:java.util.Date, java.util.Calendar, java.sql.Timestamp,

java.sql.Date, java.sql.Time

5).XML:org.w3c.dom.Docmument, org.jdom.Element, XMLStrea mReader,

XML文本

6).包含以上类型的自定义类型

Aegis需要绑定的类型

1).集合类型(Collection)

2).包含集合类型的自定义类型

当使用JDK1.4时,或者是使用了JDK1.5及以上版本但是没有使用泛型的时候、当遇到需要映射POJO或配置WebService接口方法返回类型(如集合类型)时,需要进行绑定,此时aegis的绑定为建立.aegis.xml的文件。

2.编写接口类HelloXfireObj.java

package https://www.360docs.net/doc/8c8368103.html,.freshpower.servic es;

import java.util.List;

import https://www.360docs.net/doc/8c8368103.html,er;

public interface HelloXfireObj {

public User getUser(User user);

public List getList();

}

编写接口实现类

package https://www.360docs.net/doc/8c8368103.html,.freshpower.services;

import java.util.ArrayList;

import java.util.List;

import https://www.360docs.net/doc/8c8368103.html,er;

public class HelloXfireObjImpl implements HelloXfireObj{

public User getUser(User user){

System.out.println("------------------Xfire2 被调用----------------");

user.setName("ujjboy");

user.setAge("22");

return user;

}

public List getList(){

System.out.println("------------------Xfire2 被调用----------------");

List list =new ArrayList();

list.add("aaaaaaa");

list.add("bbbbbbb");

list.add("ccccccc");

return list;

}

}

3.绑定数据类型。

新建与接口类同名的.aegis.xml文件如下图:

文件内容如下:

注意List里面带的是简单数据类型就不用绑定,带的是复杂类型就用绑定类

型。而且List一定要声明所包含的对象。例如List,List等。

4.修改webapp\WEB-INF\services.xml 发布Web Service。

和上例没什么区别,在文件中增加节点:

HelloXfireObj

https://www.360docs.net/doc/8c8368103.html,

https://www.360docs.net/doc/8c8368103.html,.freshpower.services.HelloXfireObj

https://www.360docs.net/doc/8c8368103.html,.freshpower.services.HelloXfireObjImpl

5.重启Tomcat

文件。

附录1: 1Server工程的结构

二调用Web Services

2.1 准备工作

2.1.1 新建工程

新建一个2Client的Web Project 把刚才1Server的lib下的jar包复制过来. 2.1.2 启动Tomcat上发布的1Server服务

1Server服务上应该有axis和XFire发布的4个Web Service等待调用。http://localhost:8080/1Server/services/HelloAxis?wsdl

http://localhost:8080/1Server/services/HelloAxisObj?wsdl

http://localhost:8080/1Server/service/HelloXfire?wsdl

http://localhost:8080/1Server/service/HelloXfireObj?wsdl

2.2 Axis发布的Web Service调用方式

Axis支持三种方法:

?Dynamic Invocation Interface (DII)方式

?Dynamic Proxy方式

?Stubs方式

2.2.1 Dynamic Invocation Interface (DII)方式

该方式可以不用生成本地客户端,直接从wsdl文件中得到操作方法,传递的参数等。

然后按照下面的1到6步写代码就可以。

step1: 创建一个Service实例,注意是必须的!

step2: 创建Call实例,也是必须的!

step3: 为Call设置服务的位置操作的方法名

step4: 映射要传递自定义类型设置返回类型等(可选)

step5: 为方法增加参数,传几个参数写几个(可选)

step6: 用参数数组调用Web Service

package https://www.360docs.net/doc/8c8368103.html,.freshpower.client;

import https://www.360docs.net/doc/8c8368103.html,space.QName;

import javax.xml.rpc.ParameterMode;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

public class TestAxis1 {

public static void m ain(String[] args) throws Exception {

/**step1:创建一个Service实例,注意是必须的!*/

Service service =new Service();

/**step2:创建Call实例,也是必须的!*/

Call call = (Call) service.createCall();

/**step3:为Call设置服务的位置操作方法名*/

call.setTargetEndpointAddress(new

https://www.360docs.net/doc/8c8368103.html,.URL("http://localhost:8080/1Server/services/HelloAxis"));

call.setOperationName("sayHello");//操作的方法注意方法名与HelloAxis.java中一样

/**step4映射要传递自定义类型设置返回类型等(可选)如果返回的是自定义类型也要映射*/ call.setReturnType(XMLType.XSD_STRING);

/**step5:为方法增加参数,传几个参数写几个*/

call.addParam eter( new

QName("https://www.360docs.net/doc/8c8368103.html,/","name"),XMLType.XSD_STRING,ParameterMode.IN );

/**step6:用参数数组调用Web Service*/

String name ="freshpower";

String result = (String) call.invoke(new Object[]{nam e});

System.out.println(result);

}

}

执行的结果是:

2.2.2 Dynamic Proxy方式

该方法首先是在本地虚拟一个服务端Web Service的接口。该接口继承java.rmi.Remote类。

package https://www.360docs.net/doc/8c8368103.html,.freshpower.client;

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface TestAxis2Iface extends Remote {

public String sayHello(String name) throws RemoteException;

}

然后我们再写一个代理服务在本地调用这个接口类。

package https://www.360docs.net/doc/8c8368103.html,.freshpower.client;

import https://www.360docs.net/doc/8c8368103.html,.MalformedURLException;

import https://www.360docs.net/doc/8c8368103.html,.URL;

import java.rmi.RemoteException;

import https://www.360docs.net/doc/8c8368103.html,space.QName;

import javax.xml.rpc.Service;

import javax.xml.rpc.ServiceException;

import javax.xml.rpc.ServiceFactory;

public class TestAxis2Proxy {

public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException {

String wsdlUrl ="http://localhost:8080/1Server/services/HelloAxis?wsdl";

String nameSpaceUri ="http://localhost:8080/1Server/services/HelloAxis";

String serviceName ="HelloAxisService";//从wsdl文件中得到

String port Nam e = "HelloAxis"; //从wsdl文件中得到

ServiceFactory serviceFactory = (ServiceFactory) ServiceFactory.newInstance();

Service service = serviceFactory.createService(new URL(wsdlUrl), new

QName(nameSpaceUri, serviceName));

TestAxis2Iface proxyClient = (TestAxis2Iface) service.getPort(new

QName(nameSpaceUri, portName), TestAxis2Iface.class);

System.out.println(proxyClient.sayHello("freshpower"));

}

}

运行结果是:

2.2.3 Stubs方式

Stubs方式是使用axis自带的WSDL2JAVA根据发布的WSDL文件生成本地客户端,然后直接在本地调用。

首先学习下WSDL2JAVA工具。我们新建一个wsdl2java.bat 内容如下:

@echo -----------------------------------------

@echo 设置Output_Path设置为你要生成的路径

@echo Package设置为生成文件的包路径

@echo 最后是wsdl可以是文件路径可以是URL

@echo -----------------------------------------

@pause

JAVA编程不得不看的几本经典书籍

为了帮助对java编程感兴趣的同学更好、更快的提高编程技术,武汉北大青鸟光谷校区专业老师在此推荐几本学习编程非常有用的书籍,以供大家参考。 入门类 1.《java从入门到精通》(第3版) 【内容介绍】 本书从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java 语言进行程序开发应该掌握的各方面技术。全书共分28章,包括:初识Java,熟悉Eclipse 开发工具,Java 语言基础,流程控制,字符串,数组,类和对象,包装类,数字处理类,接口、继承与多态,类的高级特性,异常处理,Swing程序设计,集合类,I/O输入输出,反射,枚举类型与泛型,多线程,网络通信,数据库操作,Swing表格组件,Swing树组件,Swing其他高级组件,高级布局管理器,高级事件处理,AWT绘图与音频播放,打印技术和企业进销存管理系统等。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会Java程序开发的精髓,快速提高开发技能。 【推荐理由】 本书内容详尽,实例丰富,非常适合作为编程初学者的学习用书,也适合作为开发人员的查阅、参考资料。 2.《java核心技术卷一》 【内容介绍】 本书是Java技术经典参考书,多年畅销不衰,第7版在保留以前版本风格的基础上,涵盖Java2开发平台标准版J2SE5.0的基础知识,主要内容包括面各对象程序设计、反射与代理、接口与内部类、事件监听器模型、使用Swing UI工具箱进行图形用户界面设计,异常处理、流输入/输出和对象序列化、泛型程序设计等。本书内容翔实、深入浅出,附有大量程序实例,极具实用价值,是Java初学者和Java程序员的必备参考书。 【推荐理由】 本书出版以来,深受广大读者的喜爱,它全面介绍了Java SE的基础知识,不但具有使用价值,而且易于阅读,易理解,它必成为想进军Java和基础薄弱同学的不二之选。 3.《java编程语言》 【内容介绍】 本书以Java语言创建者的独特视角向读者展现了为什么以及如何使用Java语言,以便读者理解Java语言的基本设计目标以及它在现实世界中的应用。本书介绍的是Java语言的

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.360docs.net/doc/8c8368103.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.360docs.net/doc/8c8368103.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.360docs.net/doc/8c8368103.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)应用到产品家族中

axis2 WebService 开发指南

Axis2.x WebService 上次介绍了axis1.x的用法,这次继续上次的,将叙述axis2的用法。 Axis1.x在线博文:https://www.360docs.net/doc/8c8368103.html,/hoojo/archive/2010/12/20/1911349.html 一、准备工作 1、开发准备 首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。 下载地址:https://www.360docs.net/doc/8c8368103.html,/axis2/java/core/download.cgi 现在最高的版本是1.5.4的 然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。 下载页面:https://www.360docs.net/doc/8c8368103.html,/axis2/java/core/tools/index.html Service Archive Wizard - Eclipse Plug-in Code Generator Wizard - Eclipse Plug-in 2、安装eclipse插件 如果你的eclipse插件安装成功后,会看到如下效果: 3、分析axis2-bin文件目录结构 下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下: bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具 conf是axis2的配置文件 lib运行所要的依赖库 repository是发布过的axis服务和文件 sample是示例

学习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.360docs.net/doc/8c8368103.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.360docs.net/doc/8c8368103.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 + ": 您好啊!";

eclipse创建webservice的两种方法

在eclipse 中创建webservice项目 方法一:使用xfire支持 1.创建Dynamic Web Project 项目: 2.将编译路径改为项目/web-INF/classes; 3.将META-INF 文件夹移动到src下面,并在META-INF 中创建xfire文件夹,文件夹内放入services.xml文件; 4.添加xfire支持的jar包:

5.编写web.xml: 7.编写services.xml

可以存在多个service; 8.访问http://localhost:port/projectName/services/url-pattern?wsdl(蓝色字体均为相应的内容);方法二:使用Axis2支持 1.1Axis2发行包 Axis2以多个发行包发行。你需要哪个视你所需决定。 1.1.1标准二进制发行包 如果你正在开发服务和应用程序,你需要Axis2标准二进制发行包。这个发行包包括所有必要的*.jar文件,以及很多便于开发用的脚本。它具有以下结构。 Axis2标准二进制发行包目录的结构 bin axis2.bat axis2.sh axis2server.bat axis2server.sh java2wsdl.bat java2wsdl.sh wsdl2java.bat wsdl2java.sh setenv.sh lib activation-1.1.jar ... XmlSchema.jar repository modules modules.list addressing-1.1.mar ... services services.list version.aar ... samples ... webapp ... conf axis2.xml LICENSE.txt README.txt NOTICE.txt INSTALL.txt release-notes.html bin目录包括一些有用的脚本。它们包括axis2.bat(或者axis2.sh),这个文件可以让你在不手工添加Axis2 jar文件到类路径的情况下方便的执行Java命令;java2wsdl.bat(和.sh)和wsdl2java.bat(和.sh),它可以让你轻易的从一个WSDL文件生成Java代码,反之亦然;axis2server.bat(和sh),一个简易Web服务器,它可以让你早自己的应用程序中搭建Axis2

E-Message服务器安装手册

E-M e s s a g e服务器安 装手册 https://www.360docs.net/doc/8c8368103.html,work Information Technology Company.2020YEAR

E-Message服务器安装手册

版权说明 本手册以及相关的计算机软件程序仅用于为泛微协同管理平台最终用户提供信息,上海泛微软件有限公司有权。本手册是上海泛微软件有限公司的专有信息,并受中华人民共和国版权法和国际公约的保护。 未得到上海泛微软件有限公司明确的书面许可,不得为任何目的、以任何形式或手段辅助或传播本手册的任何部分内容。 本手册内容若有变动,恕不另行通知。本手册中例子中所引用的公司、人名和数据若非特殊说明,均属虚构。 本手册以及本手册所提及的任何产品的使用均受适应的最终用户许可协议限制。本手册由上海泛微软件有限公司制作。本手册中提及的所有商标、商标名称、服务标志及徽标均归其各自公司所有。

目录 第1章配置及启动服务 (6) 一、升级E-cology (6) 二、E-message服务端安装 (7) 1.2.1解压安装包 (7) 1.2.2安装服务 (7) 1.2.3配置云存储 (7) 第2章引导安装 (9) 第3章管理控制台设置 (15) 一、概述 (15) 二、服务器 (15) 3.2.1服务器管理 (15) 3.2.2服务器设置 (18) 3.2.3服务器授权信息 (19) 三、用户 (20) 3.3.1用户摘要 (20) 3.3.2用户搜索 (21) 四、会话 (22) 五、客户端 (22)

3.5.1客户端管理 (22) 3.5.2客户端快捷图标 (23) 3.5.3其它设置 (26)

基于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.360docs.net/doc/8c8368103.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;

背书品牌的基本构架

背书品牌的基本架构 背书品牌是指在不同的类别环境使用不同的主品牌,但同时也使用另外一个品牌对其进行担保。背书品牌不仅明朗了品牌的来源以及品牌之间的关系,而且保证了品牌战略的灵活性:被背书品牌既不独立于背书者之外,它被背书品牌确保能够实现所承诺的价值主张和功能优势;同时也有足够的自由来发展自己的识别性资产,被背书品牌拥有不同于背书者的品牌联想和品牌个性。 背书品牌是广义品牌关系谱中品牌之间分离程度较高的一种定位,在背书品牌架构的品牌组合中,品牌之间存在着相当大的独立性,诸被背书品牌在各自的领域都发挥着基本的驱动者作用,尽管背书品牌也有一定程度的驱动力但并不扮演主角,其对被背书品牌的认知影响也仅仅是提供信誉和保障(当然在某些情况下也会附带一些实质性的支持内容)。 万豪公司的品牌组合就是背书品牌架构的典型,marriott开发了一系列新的被背书品牌如courtyard、fairfield inn、residence inn、towneplace suites、springhill suites来运营不同的旅客市场,这些被背书品牌凭借着自己独特的主权身份和品牌体验吸引着各自的顾客,但做为背书者的marriott也提供了识别支持(marriott的核心识别“和谐亲切的服务”能延伸病作用于各个市场)、信誉担保(旅客、加盟商、社区由此明白是marriott在背后支持而大表欢迎)和常客计划(跨品牌的积分和优待活动)。 背书品牌包括三个次级架构:象征背书、关联名称和强势背书。 象征背书的次级架构 背书品牌的次级架构之一是象征背书,象征背书是指被背书品牌在各自领域的舞台都是需要特写大写的主角,而背书品牌则不占据中心位置安居幕后。在象征背书架构的品牌组合中,各业务背景在共用一个背书品牌的基础上都拥有自己的主权品牌,被背书品牌拥有主权化的品牌资产和品牌识别并发挥着主要的驱动作用,背书品牌只是起到辅助驱动的作用,其资产价值和品牌识别对受托品牌影响不大仅限于提供信誉和保证,品牌体验活动以被背书品牌为中心展开,主要的管理资源和预算也集中使用于被背书品牌。 联合利华是采取象征背书架构的典型,联合利华是堪与宝洁媲美的全球日化巨头,但在竞争中由于缺少全球领导品牌而出现了持续的业绩下滑和竞争力衰退:2004年在联合利华和宝洁的收入都接近520亿美元的基础上,宝洁的利润是64亿美元同比增长13%,而联合利华的利润只有24.2亿美元同比下降32%,

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.360docs.net/doc/8c8368103.html,。只需要发出一个动态请求,要求https://www.360docs.net/doc/8c8368103.html,向自己提供图片。这种情况下,https://www.360docs.net/doc/8c8368103.html,提供的就是一种Web service。如果把图片都存放在本地服务器,不调用https://www.360docs.net/doc/8c8368103.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的基本通信协议,简单,投入和使用的代价也很小。

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),点击列表左上角的“保存”,之后页面右上角的“返回”按钮,返回首页。 这一步设置,代表我们只设置用户名/密码的调用认证方式。

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.360docs.net/doc/8c8368103.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); } }

JAVA之WebService框架---Xfire全解

Java WebService框架之XFire使用说明 声明:此文档只为做学习交流用,如果你有任何异议或更好的想法,欢迎你在群里讨论或者与我讨论!希望能够帮到你! WebService这个字眼,或许大家听起来,并不陌生,一般做过几年开发经验的程序员,几乎都跟它打过交道,首先,我要说明的是,WebService并不是java的特权,也就是说,并不是java只有WebService,.net有,C#有。。。等等 不罗嗦,首先我得让大家知道,WebService是干嘛用的,从字面意思理解就是web服务,其实,说白了,Web Services就是发布的、完成其特定需求的、在线应用服务。其他公司或应用软件能够通过Internet来访问并使用这项在线服务。WebService的主要目标是跨平台的可互操作性。他独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。(相关详细解释,大家可以百度的文库) 我举个例子,或许大家就明白了,我举个它的应用, 比如说,现在有这么一个需求: WebService应用案例一:张三传递给李四某个城市的名字比如说北京,李四反馈给张三北京的天气预报为:晴,王五传递给李四的城市名字济南,李四反馈给王五济南的天气预报为:阴;赵六传递给李四武汉。。。。。。。。等等。。。。但是,无论是谁想给李四传递城市的名字,必须遵循李四开放出来的一个发送地址,要不然你找不到李四,李四也收不到你的请求城市。 那么,在该示例中,无非就是想实现的一个功能就是,任何人传递给李四一个城市的相关名字,李四反馈给请求者该城市的天气情况,前提是,按照李四公布给大家的发送地址,那么,所有向李四发送请求城市的人,都会收到李四反馈的请求的城市的天气情况,那么这就是一个典型的webservice的调用,它与平台无关,跟每一个系统都无关,是独立的在线服务,那么,在此例中,每一个向李四发送请求的人,都是客户端,而李四所实现的接受城市,反馈回天气预报的功能,就是webservice的服务断,而李四提供的发送地址,就是大名鼎鼎的访问Webservice得到WSDL地址 再给大家举一个例子: WebService应用案例二:有两套系统,A系统为用。Net语言开发的,B系统用java语言开发的,现在有一个需求,就是要实现A系统跟B系统之间的信息交互,那么此时,A系统,可以写一个。Net的webService,之后,公布给B系统webservice的访问地址,那么B系统就可以访问A系统,而A系统如果想访问B系统的数据,那么B系统可以写一个java 的webService,把地址告知给A系统,A系统就可以访问B系统的数据。 可能有的人会有疑问,貌似。。当前不同系统间交互数据都用XML么?如果你能想到这,恭喜你,你已经跟设计webservice的人的想法一样了,呵呵。。因为它的描述WSDL就是xml 其实一般说到webservice,就是开发它的服务端,客户端,基本上没什么技术含量,按照某种格式调用就OK。

通过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.360docs.net/doc/8c8368103.html,/xml/ns/javaee" xmlns:xsi= "https://www.360docs.net/doc/8c8368103.html,/2001/XMLSchema-instance" xsi:schemaLocation= "https://www.360docs.net/doc/8c8368103.html,/xml/ns/javaee https://www.360docs.net/doc/8c8368103.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

计算机基础知识面试

精品文档考试教学资料施工组织设计方案 1、写出你知道的排序算法名称及其复杂度(至少三种) 答:1)冒泡排序(简单) 2)插入排序(最复杂) 3)选择排序(较复杂) 2、给出TCP,IP,HTTP,FTP之间的层次关系(参照网络七层协议划分)答:百度“网络七层协议” 3、设有下列数据表 如何将该数据表的对应关系规范化到第三范式 答:车间编号车间名称车间主任名称 职工号姓名职工工资所属车间编号 4、设有学生表A和考试成绩表B,结构如下: A A表主键(a) B B表主键(a,b,c)

a)写一个sql语句,列出”200411”号课程考试成绩不及格的学生的学号、姓名、年龄Select a,b,d from A where a in(select a from B where b=’200411’ and d<60) b)写一个sql语句,列出考试成绩不及格的课程门数大于6门的学生的学号、姓名、年龄 Select a,b,d from A where a in(Select a from b where d<60 group by a having count(*)>6) c)写一个sql语句,列出考试成绩尚未及格的课程门数大于6门的女生的学号、姓名、年龄 Select a,b,d from A where a in(Select a from b where d<60 group by a having count(*)>6) and c=1 第三部分:实际开发经验 一、程序设计部分(5,6题任选一题即可) [使用任意一种语言均可] 5、编写一个表达式,计算月收入为x元时的个人所得税,假定x<=5000。所得累进 税率为5%,累进点为1000元,1500元和3000元 如: x=1200时,税为(1200-1000)*5% x=2000时,税为(2000-1000)*5%+(2000-1500)*5% x=5000时,税为(5000-1000)*5%+(5000-1500)*5%+(5000-3000)*5% 特别注意:要求写的是一句的表达式,而不是一段程序,其中不得有分行符,尽量短 x>3000? (x-1000)*5%+(x-1500)*5%+(x-3000)*5%:x>1500? (x-1000)*5%+(x-1500)*5%:(x-1000)*5% 6、编写字符串查找函数 函数有三个参数,一个是源字符串,一个是目标子串,一个是查找方向(自右向左或自左向右),函数实现按照查找方向在源字符串中查找目标子串,并返回查找到的位置。查不到返回-1

XML Web services 基础结构

XML Web services 基础结构 若要在 Web 的多样性世界里取得成功,在涉及到操作系统、对象模型和编程语言的选择时,XML Web services 不能有任何倾向性。同样,若要使 XML Web services 像其他基于 Web 的技术一样被广泛采用,则它们必须是: ?松耦合的:如果对两个系统的唯一要求是要理解前面提到的自我描述的基于文本的消息,那么这两个系统就被认为是松耦合的。另一方面,紧耦合系统要求大量自定义系统开销来进行通信,并要求系统之间有更多的了解。 ?常见的通信:大概不会有人会在现在或不远的将来生成一个无法连接到 Internet 的操作系统,因此,需要提供常见的通信信道。同样,能够将几乎所有系统或设备连接到 Internet 的能力将确保这样的系统和设备能够为连接到Internet 的所有其他系统或设备所使用。 ?通用数据格式:通过用现有的开放式标准而不是专用的封闭通信方法,任何支持同样的开放式标准的系统都能够理解 XML Web services。在采用自我描述的基于文本的消息时,XML Web services 及其客户端无须知道每个基础系统的构成即可共享该消息,这使得自治系统和完全不同的系统之间能够进行通信。XML Web services 使用 XML 实现此功能。 XML Web services 采用一种基础结构,该基础结构提供下列内容:定位 XML Web services 的发现机制、定义如何使用这些服务的服务说明以及通信时使用的标准连网形式。下图显示了此基础结构的一个示例。 XML Web services 基础结构

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。

相关文档
最新文档