- 浏览: 370324 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
jiangli19192:
...
自己写的一个启动JBoss服务器的bat批处理 -
56553655:
最好这样:java -Xms3700M -Xmx3700M - ...
测试本机JVM支持的最大内存 -
lizhiy05:
学习一哈……
Web Services体系结构及相关概念 -
ghy200692162:
System.out.println("开始注册Js ...
基于OSGi的JSF Web组件开发问题求解 -
xiao888lin:
你的头像看起来很像我们宿舍老四。。。
测试本机JVM支持的最大内存
通常情况下,我们创建的WebService服务是以aar包的形式发布到服务器上的,为了简化我们的发布过程,写一个ant脚本是理所当然的了,当然你也可以连WebService的客户端测试脚本一起写好,下面就是我做的
xml 代码
- <project basedir="." default="generate.service">
- <property environment="env"/>
- <property name="AXIS2_HOME" value="${env.AXIS2_HOME}"/>
- <property name="build.dir" value="build"/>
- <path id="axis2.classpath">
- <fileset dir="${AXIS2_HOME}/lib">
- <include name="*.jar"/>
- fileset>
- path>
- <path id="client.class.path">
- <fileset dir="${AXIS2_HOME}/lib">
- <include name="*.jar" />
- fileset>
- <pathelement location="${build.dir}/classes" />
- path>
- <target name="compile">
- <mkdir dir="${build.dir}"/>
- <mkdir dir="${build.dir}/classes"/>
- <!---->
- <javac debug="on"
- fork="true"
- destdir="${build.dir}/classes"
- srcdir="${basedir}/src"
- classpathref="axis2.classpath">
- javac>
- target>
- <target name="generate.service" depends="compile">
- <!---->
- <copy toDir="${build.dir}/classes" failonerror="false">
- <fileset dir="${basedir}/resources">
- <include name="**/*.xml"/>
- <include name="**/*.wsdl"/>
- fileset>
- copy>
- <jar destfile="${build.dir}/HelloWorldService.aar">
- <fileset excludes="**/Test.class" dir="${build.dir}/classes"/>
- jar>
- target>
- <target name="run.client" depends="compile">
- <java classname="samples.helloworld.client.HelloWorldClient">
- <classpath refid="client.class.path" />
- java>
- target>
- <target name="clean">
- <delete dir="${build.dir}"/>
- target>
- project>
WebService的服务提供类如下:
java 代码
- package samples.helloworld.service.axiom;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import org.apache.axiom.om.OMElement;
- import org.apache.axiom.om.OMAbstractFactory;
- import org.apache.axiom.om.OMNamespace;
- import org.apache.axiom.om.OMFactory;
- import javax.xml.stream.XMLStreamException;
- /**
- *
- *
- Description:
-
-
- * @author Danlley Wei
- * @version 1.0
- * @date 2007-4-5
- */
- public class HelloWorldService{
- private HashMapmessages=new HashMap();//存放用户信息
- public static final String URL="http://axiom.service.helloworld.samples/xsd";
- public static final String NS="ns";
- OMFactory fac=OMAbstractFactory.getOMFactory();//初始化工厂
- OMNamespace omNs=fac.createOMNamespace(URL,NS);//生成命名空间
- /**
- * 说明:客户端请求授权信息时调用的接口
- * @param element 用来接收客户端的XML信息
- * @return
- * @throws XMLStreamException
- */
- public OMElement getHelloWorldMs(OMElement element)throws XMLStreamException{
- try{
- element.build();
- element.detach();
- ArrayList dataLi=new ArrayList();
- String symbol=null;
- String userPWD=null;
- String transactionKey=null;
- for(Iterator it=element.getChildElements();it.hasNext();){
- OMElement temp=(OMElement)it.next();
- if(temp.getLocalName().equalsIgnoreCase("symbol")){
- symbol=temp.getText();
- }
- if(temp.getLocalName().equalsIgnoreCase("userPWD")){
- userPWD=temp.getText();
- }
- if(temp.getLocalName().equalsIgnoreCase("transactionKey")){
- transactionKey=temp.getText();
- }
- if(null!=userPWD)dataLi.add(userPWD);
- if(null!=transactionKey)dataLi.add(transactionKey);
- if(null!=symbol)dataLi.add(symbol);
- }
- // System.out.println("********"+symbol+" | "+userPWD+" | "+transactionKey+" | "+"********");
- element=responseMessage("getHelloWorldMsResponse",symbol,userPWD,transactionKey);//产生应答信息
- return element;
- }catch(Exception e){
- e.printStackTrace();
- throw new XMLStreamException();
- }
- }
-
- /**
- * 说明:此方法无返回值,用于初始化用户帐号信息
- *
- * @param element
- * @throws XMLStreamException
- */
- public void setHelloWorldMs(OMElement element)throws XMLStreamException{
- try{
- element.build();
- element.detach();
- String symbol=null;
- String userPWD=null;
- String transactionKey=null;
- ArrayList dataLi=new ArrayList();
- for(Iterator iter=element.getChildElements();iter.hasNext();){
- OMElement tmp=(OMElement)iter.next();
- if(tmp.getLocalName().equalsIgnoreCase("symbol")){
- symbol=tmp.getText();
- }
- if(tmp.getLocalName().equalsIgnoreCase("userPWD")){
- userPWD=tmp.getText();
- }
- if(tmp.getLocalName().equalsIgnoreCase("transactionKey")){
- transactionKey=tmp.getText();
- }
- if(null!=userPWD)dataLi.add(userPWD);
- if(null!=transactionKey)dataLi.add(transactionKey);
- if(null!=symbol)dataLi.add(symbol);
- }
- if(!messages.containsKey(symbol)){
- messages.put(symbol,dataLi);
- System.out.println("******** add user "+symbol+" ********");
- }else{
- System.out.println(" The userInfo already exist here ------->"+symbol);
- }
- }catch(Exception e){
- e.printStackTrace();
- throw new XMLStreamException(e);
- }
- }
-
- /**
- * 说明:用于判断是否下载成功,消息产生方式与方法:
- * getHelloWorldMs(OMElement element)throws XMLStreamException相同。
- * @param element
- * @return
- * @throws XMLStreamException
- */
- public OMElement getDownloadConfirm(OMElement element)throws XMLStreamException{
- try{
- element.build();
- element.detach();
- String symbol=null;
- String userPWD=null;
- String transactionKey=null;
- OMElement myel=element.getFirstElement();
- symbol=myel.getText();
- OMElement myel1=(OMElement)myel.getNextOMSibling();
- userPWD=myel1.getText();
- OMElement myel2=(OMElement)myel1.getNextOMSibling();
- transactionKey=myel2.getText();
- element=responseMessage("getDownloadConfirmResponse",symbol,userPWD,transactionKey);//产生应答信息
- System.out.println("**********************************************************");
- System.out.println(" DOWNLOAD INFORMATION ");
- System.out.println(" the message have been sended to the Client !");
- System.out.println("**********************************************************");
- return element;
- }catch(Exception e){
- e.printStackTrace();
- throw new XMLStreamException(e);
- }
- }
-
- /**
- * 说明:产生客户端请求后的应答信息,其信息为一个OMElement对象OMElement element ,其结果送给上层调用者
- * getHelloWorldMs(OMElement element)throws XMLStreamException;
-
- * getDownloadConfirm(OMElement element)throws XMLStreamException
- * @param eleName
- * @param userName
- * @param userPWD
- * @param transactionKey
- * @return
- */
- private OMElement responseMessage(String eleName,String userName,String userPWD,String transactionKey){
- OMElement element=fac.createOMElement(eleName,omNs);
- if(cheAuthrized(userName,userPWD)){
- element=createRespElement(element,"0","Success");//产生授权成功的应答信息
- }else{
- //生成一个1~11以内的随机数,如果随机数为 0 ,则强制指定为 10 ,防止与正确的应答 code重复
- int rand=(int)(Math.random()*10);
- if(rand+Math.random()>9)rand=11;
- if(rand==0)rand=10;
- System.out.println("There are some errors occured here with the random number : "+rand);
- element=getErrorElement(rand,element);
- }
- return element;
- }
-
- /**
- * 说明:根据不同的错误码,获取错误信息结点,并把结点信息送到上层调用者
- * responseMessage(String eleName,String userName,String userPWD,String transactionKey);
- * @param errorCode
- * @param element
- * @return
- */
- private OMElement getErrorElement(int errorCode,OMElement element){
- switch(errorCode){
- case 1:
- element=createRespElement(element,"REQUEST_ERROR","Error on the request (parameter format)");
- break;
- case 2:
- element=createRespElement(element,"CONTEXT_ERROR","Context errors (in this case, can be user disabled)");
- break;
- case 3:
- element=createRespElement(element,"SECURITY_ERROR","Wrong Credentials or Permission Denied on this API");
- break;
- case 4:
- element=createRespElement(element,"SECURITY_ERROR","Invalid credentials");
- break;
- case 5:
- element=createRespElement(element,"REQUEST_ERROR","transactionKey is required");
- break;
- case 6:
- element=createRespElement(element,"REQUEST_ERROR","Invalid transactionKey format");
- break;
- case 7:
- element=createRespElement(element,"REQUEST_ERROR","Invalid transactionKey");
- break;
- case 8:
- element=createRespElement(element,"CONTEXT_ERROR","transactionKey already confirmed");
- break;
- case 9:
- element=createRespElement(element,"CONTEXT_ERROR","transactionKey not found");
- break;
- case 10:
- element=createRespElement(element,"CONTEXT_ERROR","Not enough credits ");
- break;
- default:
- element=createRespElement(element,"APPLICATION_ERROR","Undetected error on Web Service");
- break;
- }
- return element;
- }
-
- /**
- * 说明:当服务器收到请求后做出应答响应,并将应答信息返回给客户端,该应答信息是一个xml结点,如下:
- *
- * the response code
- * detail information
- *
- * 此方法仅仅用于生成如上结构的结点,并将处理后的结果转交给上层调用者
- * responseMessage(String eleName,String userName,String userPWD,String transactionKey);
- * 来处理
- * @param eleName
- * @param arg0
- * @param arg1
- * @return
- */
- private OMElement createRespElement(OMElement element,String arg0,String arg1){
- OMElement value1 = fac.createOMElement("Code", omNs);
- value1.addChild(fac.createOMText(value1, arg0));
- element.addChild(value1);
-
- OMElement value2 = fac.createOMElement("Description", omNs);
- value2.addChild(fac.createOMText(value2, arg1));
- element.addChild(value2);
-
- return element;
- }
-
- /**
- * 说明:判断当前用户的账户信息是否正确,只有在用户名和密码都正确的情况下才返回true,并把结点信息送到上层调用者
- * responseMessage(String eleName,String userName,String userPWD,String transactionKey);
- * @param userName 用户名
- * @param userPWD 密码
- * @return
- */
- private boolean cheAuthrized(String userName,String userPWD){
- // System.out.println("********"+userName+" | "+userPWD+"********");
- if(messages.containsKey(userName)&&null!=userPWD){
- ArrayList myLi=(ArrayList)messages.get(userName);
- String userPWD_chk=(String)myLi.get(1);
- if(userPWD.equals(userPWD_chk))return true;
- }
- return false;
- }
- }
-
执行如下命令:
java2wsdl -cp . -cn samples.helloworld.service.axiom.HelloWorldService -of HelloWorldService.wsdl
打开生成的wsdl文件进行修改,删除文件中的下面代码:
<xs:element name="getHelloWorldMsFault"><soap:body use="literal" namespace="&lt;a href=" axiom.service.helloworld.samples=" _fcksavedurl="><soap:body use="literal" namespace="&lt;a href=" axiom.service.helloworld.samples=" _fcksavedurl="><soap12:body use="literal" namespace="&lt;a href=" axiom.service.helloworld.samples=" _fcksavedurl="><soap12:body use="literal" namespace="&lt;a href=" axiom.service.helloworld.samples=" _fcksavedurl="><soap12:body use="literal" namespace="&lt;a href=" axiom.service.helloworld.samples=" _fcksavedurl=">
xml 代码
- <xs:element name="getDownloadConfirmFault">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="getDownloadConfirmFault" type="xs:anyType" />
- xs:sequence>
- xs:complexType>
- xs:element>
- <xs:element
发表评论
-
让mybatis支持管理和操作多个不同的业务数据库实例
2017-05-07 21:25 6399在微服务大行其道的今天,一个工程中同时操作多个不同的业务数 ... -
Spring Acegi鉴权管理之基础模式(BASIC)
2017-05-01 01:25 1099Acegi久负盛名,这个家伙是一个spring中广泛使用的认 ... -
Restful架构服务构建指南
2017-04-17 01:19 540REST定位为“分布式超媒体应用(Distributed H ... -
集成ibatis的spring工程升级到spring4.0实操手册
2017-04-03 21:57 3290Spring4及已经的版本放弃了对ibatis的集成支持, ... -
Docker使用之Java web应用部署
2017-03-26 13:50 4041此篇博客一部分内容 ... -
Java设计设计模式之桥接模式(Bridge)
2017-03-11 19:19 0... -
Java设计设计模式之组合模式(Composition)
2017-03-11 17:32 1084那王麻子自从做了肉夹馍生意后,真是风生水起,分店开的跟下饺 ... -
Java设计设计模式之适配器模式(Adaptor)
2017-03-05 15:29 1551我的博客自从2008年以 ... -
RBAC原理介绍及开源框架kasai使用分析
2008-08-13 16:20 10562RBAC 模型作为目前 ... -
用Maven Plug-In来构建Corba开发环境
2008-03-21 10:49 3060这两天研究Corba,总是感觉需要在Java的命令行执行“id ... -
LDAP介绍
2008-03-18 09:57 16611.1. LDAP是什么 LDAP是轻量目录访问协议,英文全称 ... -
Java与CORBA技术结合的前景展望
2008-03-13 11:09 1940随着Internet、Intranet及Extranet在全球 ... -
Drools规则引擎应用总结
2008-02-01 10:07 0package com.playphone.qc.workfl ... -
详解Axis2实现Web Services之ADB篇
2007-07-17 22:35 10020构建一个新的Web Services服务,会有很多种不同的方法 ... -
详解Axis2实现Web Services之AXIOM篇
2007-07-17 22:30 6975AXIOM——AXis 对象模型(AXis Object M ... -
详解Axis2实现Web Services之POJOs篇
2007-07-17 22:25 5338在Axis2对Web Services的众多实现方式中,POJ ... -
Web Services体系结构及相关概念
2007-07-17 22:20 3899Web Services体系结构是面向对象分析与设计(OOA ... -
Spring包结构以及各个包之间引用关系说明
2007-07-17 22:02 5162Spring 包结构说明: spring.jar 包含 ... -
从Hello World开始深入Ajax
2007-07-17 21:11 16301. 初始化XMLHttpRequest对象 ... -
在Javascript中用来获取页面焦点信息
2007-07-17 16:59 4218在Javascript中用来获取页 ...
相关推荐
通过这个“Delphi WebService简单实例”,你可以学习到如何在Delphi环境中创建和调试一个与WebService交互的应用,这对于理解Web服务和客户端通信机制至关重要。实践中不断探索,将使你更加熟练地掌握Delphi开发Web ...
【标题】"eclipse+webservice简单实例源码"揭示了这个压缩包是关于使用Eclipse集成开发环境创建和运行一个简单的Web服务示例的源代码。Eclipse是一款广泛使用的开源IDE,尤其在Java开发中非常流行。Web服务,尤其是...
Java WebService 简单实例教程 在Java开发中,WebService是一种常见的用于应用程序间通信的技术。它基于标准的XML(可扩展标记语言)和WSDL(Web服务描述语言)进行数据交换,允许不同平台和语言的应用程序之间共享...
【SOAP WebService简单例子】 SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web上交换结构化和类型化的信息。它允许服务提供者和消费者之间进行远程调用,使得分布式应用程序能够相互通信。在...
webservice简单例子, 使用jax-ws实现
### WebService 简单实例知识点详解 #### 一、WebService 概述 WebService 是一种新兴的 Web 应用程序分支,它允许不同系统之间进行通信。这些系统可以通过 Internet 使用标准协议(如 HTTP 和 XML)交换数据。...
**标题:“用XFire开发Webservice简单实例”** 在IT行业中,Web服务是不同系统间进行数据交换和功能调用的重要方式。XFire是Apache软件基金会的一个开源项目,它提供了一个轻量级、高效的框架来创建和消费Web服务。...
### Java WebService 简单实例 方式一(生成类文件方式) #### 一、概述 在本篇文章中,我们将详细介绍如何通过生成类文件的方式来创建一个简单的 Java WebService 应用程序。这种方式非常适合初学者理解和实践 ...
【标题】"cxf webService简单例子"是一个关于使用Apache CXF框架创建和消费Web服务的基础教程。Apache CXF是一个开源的Java框架,它允许开发者创建和实现符合各种Web服务标准(如SOAP、RESTful)的服务。这个例子将...
javaWebService简单实例 axis2.war下载完成后放在tomcat这个目录webapps 下面启动tomcat后 访问http://localhost:8080/axis2/ 即可
6. **调用服务**: 在客户端应用程序中,实例化生成的Stub类,通过调用其方法,就可以向服务端发送请求并接收响应。 在`webServic_Axis1.4`这个压缩包中,可能包含了上述各个步骤所需的所有文件,如WSDL文件、服务端...
Java WebService 简单实例 http://blog.csdn.net/kingmax54212008/article/details/49764401 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要的重复操作。 一、准备工作(以下为本实例...
Webservice是一种基于网络的服务接口,它允许不同系统之间进行数据交换和交互。...通过具体的实例,我们可以更好地理解Webservice的工作原理和开发过程,这有助于在实际项目中灵活应用Webservice技术。
Java WebService服务端开发。Java WebService客户端开发。java Eclipse + WebService 简单实例。简单易懂,容易上手,适合初学者,测试学习。
ASP.NET WebService是一种基于.NET Framework的Web应用程序,...在这个简单实例中,我们学习了如何创建一个接收和返回XML数据的ASP.NET WebService。通过深入理解和实践,你可以构建更复杂的服务,满足各种业务需求。
WebService也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。...可以用于在线升级,这里弄了个简单实例,算是入个门。