`
gudao8192
  • 浏览: 95277 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

axis部署WebServices 和 JAXB的运用 (一)

阅读更多
准备:
AxisApache的一个开源webservice引擎。它目前最为成熟的开源webservice引擎之一。
部署环境:MyEclipse 5.5.1 GA + JDK1.5 + JAXB+Axis1.3
JXAB下载地址:
其它所需的包:activation.jar 和 mail.jar (都可以在SUN官网下载)
(以上地址都可以直接下载,如有变动,可以分别到apache官网和sun官网下载,其中jaxb是在jwsdp安装后的子目录中)
一、部署工程:
1新建一个Web工程,名称axisweb
2解压下载的axis压缩包,AXIS_UNZIP_PATH\axis-version\webapps下的axis中的所有拷贝到新建工程axiswebWebRoot下,可以覆盖掉WEB-INF
3jwsdp安装目录下\jaxb\lib中的包拷贝到axisweb工程lib中,及下载的active.jar mail.jar也放到lib中去。
4axisweb工程的WEB-INF下新建一个server-config.wsdd
内容如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<deploymentxmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parametername="adminPassword"value="admin"/>
<parametername="attachments.Directory"value="./attachments"/>
<parametername="attachments.implementation"
value
="org.apache.axis.attachments.AttachmentsImpl"/>
<parametername="sendXsiTypes"value="true"/>
<parametername="sendMultiRefs"value="true"/>
<parametername="sendXMLDeclaration"value="true"/>
<parametername="axis.sendMinimizedElements"value="true"/>
<requestFlow>
<handlertype="java:org.apache.axis.handlers.JWSHandler">
<parametername="scope"value="session"/>
</handler>
<handlertype="java:org.apache.axis.handlers.JWSHandler">
<parametername="scope"value="request"/>
<parametername="extension"value=".jwr"/>
</handler>
</requestFlow>
</globalConfiguration>
<handlername="LocalResponder"
type
="java:org.apache.axis.transport.local.LocalResponder"/>
<handlername="URLMapper"
type
="java:org.apache.axis.handlers.http.URLMapper"/>
<handlername="Authenticate"
type
="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<servicename="AdminService"provider="java:MSG">
<parametername="allowedMethods"value="AdminService"/>
<parametername="enableRemoteAdmin"value="false"/>
<parametername="className"value="org.apache.axis.utils.Admin"/>
<namespace>http://xml.apache.org/axis/wsdd/</namespace>
</service>
<servicename="Version"provider="java:RPC">
<parametername="allowedMethods"value="getVersion"/>
<parametername="className"value="org.apache.axis.Version"/>
</service>
<transportname="http">
<requestFlow>
<handlertype="URLMapper"/>
<handlertype="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>
<transportname="local">
<responseFlow>
<handlertype="LocalResponder"/>
</responseFlow>
</transport>
</deployment>

注:也可以下载:http://www.cppblog.com/Files/wform/server-config.rar <service></service>中用于添加暴露给客户端的服务(即方法),后面将会给出示例。

二、建立web服务及服务验证

1编写服务器端程序SayHello.java

新建一个com包,新建一个SayHello.java:

packagecom;
publicclassSayHello{
publicStringsayHello(Stringname){
return"Hello"+name+",Welcome!";
}

}

sayHello添加到server-config.wsdd中:

如下所示:

<?xmlversion="1.0"?>
<projectbasedir="."default="compile">
<!--这里是jwsdp的安装目录-->
<propertyname="jwsdp.home"value="C:jwsdp-2.0"/>
<pathid="classpath">
<pathelementpath="build"/>
<filesetdir="${jwsdp.home}"includes="jaxb/lib/*.jar"/>
<filesetdir="${jwsdp.home}"includes="jwsdp-shared/lib/*.jar"/>
<filesetdir="${jwsdp.home}"includes="jaxp/lib/**/*.jar"/>
</path>
<taskdefname="xjc"classname="com.sun.tools.xjc.XJCTask">
<classpathrefid="classpath"/>
</taskdef>
<!--compileJavasourcefiles-->
<targetname="compile">
<!--generatetheJavacontentclassesfromtheschema-->
<echomessage="Compilingtheschemaexternalbindingfile..."/>
<xjcschema="po.xsd"package="primer.po"target="src"/>
<!--compileallofthejavasources-->
<echomessage="Compilingthejavasourcefiles..."/>
</target>
</project>

Run As -> Ant Build XML Schema就可以生成对应的实体类,当然po.sxd build.xml都应位于工程的根目录下!

3写一个测试的java文件

Main.java:

importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.math.BigDecimal;
importjava.math.BigInteger;
importjava.util.GregorianCalendar;
importjava.util.List;

importjavax.xml.bind.JAXBContext;
importjavax.xml.bind.JAXBElement;
importjavax.xml.bind.JAXBException;
importjavax.xml.bind.Marshaller;

importjavax.xml.bind.*;
importjavax.xml.datatype.DatatypeFactory;
importjavax.xml.datatype.XMLGregorianCalendar;
importjavax.xml.datatype.DatatypeConfigurationException;
importprimer.po.*;
publicclassMain{
publicstaticvoidmain(String[]args){
try{
JAXBContextjc
=JAXBContext.newInstance("primer.po");
PurchaseOrderTypepo
=newPurchaseOrderType();
po.setOrderDate(getDate());
USAddressshipTo
=createUSAddress("AliceSmith",
"123MapleStreet",
"Cambridge",
"MA",
"12345");
po.setShipTo(shipTo);
USAddressbillTo
=createUSAddress("RobertSmith",
"8OakAvenue",
"Cambridge",
"MA",
"12345");
po.setBillTo(billTo);
Itemsitems
=newItems();
List
<Items.Item>itemList=items.getItem();

//startaddingItemTypeobjectsintoit
itemList.add(createItem("Nosferatu-SpecialEdition(1929)",
newBigInteger("5"),
newBigDecimal("19.99"),
null,
null,
"242-NO"));
itemList.add(createItem(
"TheMummy(1959)",
newBigInteger("3"),
newBigDecimal("19.98"),
null,
null,
"242-MU"));
itemList.add(createItem(
"GodzillaandMothra:BattleforEarth/Godzillavs.KingGhidora",
newBigInteger("3"),
newBigDecimal("27.95"),
null,
null,
"242-GZ"));
po.setItems(items);
JAXBElement
<PurchaseOrderType>poElement=(newObjectFactory()).createPurchaseOrder(po);
Marshallerm
=jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);

m.marshal(poElement,
newFileOutputStream("test.xml"));

m.marshal(poElement,System.out);

}
catch(JAXBExceptionje){
je.printStackTrace();
}
catch(IOExceptionioe){
ioe.printStackTrace();
}

}

publicstaticUSAddresscreateUSAddress(Stringname,Stringstreet,
Stringcity,Stringstate,
Stringzip)
{
USAddressaddress
=newUSAddress();
address.setName(name);
address.setStreet(street);
address.setCity(city);
address.setState(state);
address.setZip(
newBigDecimal(zip));
returnaddress;
}

publicstaticItems.ItemcreateItem(StringproductName,
BigIntegerquantity,
BigDecimalprice,
Stringcomment,
XMLGregorianCalendarshipDate,
StringpartNum)
{
Items.Itemitem
=newItems.Item();
item.setProductName(productName);
item.setQuantity(quantity);
item.setUSPrice(price);
item.setComment(comment);
item.setShipDate(shipDate);
item.setPartNum(partNum);
returnitem;
}

privatestaticXMLGregorianCalendargetDate(){
try{
returnDatatypeFactory.newInstance().newXMLGregorianCalendar(newGregorianCalendar());
}
catch(DatatypeConfigurationExceptione){
thrownewError(e);
}

}

}

Java Application运行 SayHelloClient.java

输出结果:

http://p.blog.csdn.net/images/p_blog_csdn_net/isle_

分享到:
评论

相关推荐

    axis部署WebServices 和 JAXB的使用

    在这个"axis部署WebServices 和 JAXB的使用"主题中,我们将深入探讨这两个关键技术及其协同工作。 首先,让我们关注Axis的部署过程。Axis1.3是Axis的一个较旧版本,但仍然适用于许多遗留系统。部署Web服务的基本...

    axis web services 例子

    Apache Axis是开源的Java库,专门用于构建和部署Web服务,它简化了SOAP(简单对象访问协议)消息的处理。在这个例子中,我们将深入探讨如何使用Axis来实现自定义类的序列化和反序列化,这是Web服务通信中的关键环节...

    Web Services发布与调用(axis,xfire)

    - **Axis**: Axis是Apache的一个开源项目,用于构建和部署Web Services。首先创建一个新的Java工程,将Axis的JAR文件添加到项目的类路径中。这些文件通常包括`axis.jar`, `jaxrpc.jar`, `saaj.jar`, `wsdl4j.jar`等...

    Axis2 Eclipse WebService插件

    Axis2是Apache软件基金会开发的一款高性能、灵活且可扩展的Web服务引擎,它为开发者提供了一个强大而全面的平台来创建和部署Web服务。在Eclipse集成开发环境中, Axis2 WebService插件扮演着至关重要的角色,使得...

    WebServices With Apache Axis.pdf

    Apache Axis是实现Web服务的重要工具,尤其在Java环境中,它为开发、部署和消费Web服务提供了全面的支持。本篇文章将深入探讨如何利用Apache Axis来创建Web服务。 一、Web服务基础 Web服务基于开放标准,如XML(可...

    webServices学习之二——axis1传递复杂类型javabean

    总结一下,"webServices学习之二——axis1传递复杂类型javabean"这篇文章可能会详细讲解如何使用Axis1框架处理JavaBean对象,包括创建JavaBean、生成WSDL、部署服务以及客户端调用等步骤。了解这些内容对于开发基于...

    axis web Service

    【Axis Web Service】是一种基于Java的开源Web服务框架,它由Apache软件基金会开发,主要用于创建和部署Web服务。Axis提供了一种简单的方式来实现SOAP(Simple Object Access Protocol)通信,允许不同平台上的应用...

    cxf与axis2区别

    CXF支持WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile等webservices标准,Axis2支持WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本中得到支持。 CXF的标准支持...

    应用 AXIS 开始 Web 服务之旅

    AXIS是Apache软件基金会开发的一个开源工具,专门用于创建、部署和管理Web服务。本教程将带你深入理解如何使用AXIS开始你的Web服务之旅。 一、AXIS简介 AXIS作为Java平台上的Web服务工具,提供了强大的功能,如自动...

    JAVA访问WebServices接口的简单实例,android可用

    在Java编程语言中,访问Web Services接口是一项常见的任务,特别是在构建Android应用时,因为Web Services提供了数据交换和远程调用功能。本实例将探讨如何在Java中实现这一过程,特别适用于Android开发。以下是一个...

    Java Web Services: up and running

    这本书详尽地介绍了如何构建、部署和运行Java Web服务,旨在帮助读者快速掌握这一领域的核心概念和技术。 Java Web服务是基于开放标准(如SOAP、WSDL和UDDI)的应用程序,使得不同系统之间能够进行通信和数据交换。...

    Developing Web Services with Apache CXF and Axis2_3rd Edition

    作者Kent Kai Ok Tong以简明扼要的方式介绍了一系列复杂的Web服务标准和技术,并通过实际示例帮助读者掌握Apache CXF和Axis2这两个流行的开源框架。 #### 二、核心知识点解析 ##### 1. **Apache CXF与Axis2简介** ...

    axis2-1.6.1

    标题“axis2-1.6.1”指的是Apache Axis2的1.6.1版本,这是一个流行的开源Web服务引擎,用于构建和部署Web服务。Apache Axis2是Axis1的下一代,设计为更灵活、可扩展且高效。在这个版本中,它提供了一系列改进和新...

    axis和axis2的一些发布差异(WSDL2Java) 收藏

    - Axis2提供了更多高级功能,如数据绑定的选择(通过`-d`指定,可以选择`adb`、`xmlbeans`、`jibx`、`jaxme`和`jaxbri`)。 2. **部署描述文件的生成**: - 在Axis中,可以通过添加`-D`选项来生成部署描述文件...

    web service axis1.4 jar

    Axis1.4版本是该框架的一个稳定发行版,包含了对SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)的支持。 1. **SOAP与WSDL**: SOAP是一种基于XML的协议,用于在Web上交换结构...

    AXIS2接口依赖jar包

    AXIS2是一个流行的开源Web服务框架,用于创建和部署SOAP(简单对象访问协议)和RESTful服务。这个压缩包文件包含AXIS2运行时所需的全部jar包,它们是开发和运行基于AXIS2的Web服务不可或缺的部分。这些jar包提供了...

    axis入门中文文档

    【Axis入门中文文档】是针对Web Service开发的一款关键工具,主要使用了Axis框架,该框架是Apache软件基金会下的一个开源项目,专门用于构建和部署基于SOAP(Simple Object Access Protocol)的Web服务。本文将深入...

    axis1_4

    Axis是Apache软件基金会开发的一个开源Web服务框架,它主要用于创建和部署Java Web Services(JWS)。Axis1.4是该框架的一个稳定版本,发布于2006年,旨在为开发者提供一套完整的工具集,帮助他们实现SOAP协议,构建...

    MyEclipse 开发部署 Web Service

    1. Xfire:Xfire是一个轻量级、快速的Web服务框架,它使用JAX-RPC(Java API for XML-RPC)和JAXB(Java Architecture for XML Binding)来简化Web服务的开发。Xfire提供了简单的API,让开发者可以快速地将现有Java...

    axis2-1.6.1.rar

    Axis2是Apache软件基金会开发的一个开放源码的Web服务引擎,它是基于SOAP(简单对象访问协议)和WS-*(Web服务扩展)标准的。标题中的"axis2-1.6.1.rar"指的是Axis2的1.6.1版本的压缩包文件,通常包含了该版本的所有...

Global site tag (gtag.js) - Google Analytics