- 浏览: 539777 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (233)
- 设计模式 (1)
- WEBLOGIC (2)
- spring (2)
- struts (1)
- hibernate (8)
- SOA (11)
- j2ee (0)
- corba (0)
- linux (2)
- oracle (0)
- webService (17)
- javaMail (1)
- junit (3)
- java (45)
- 正则表达式 (7)
- java+xml (4)
- html (2)
- javaScript (6)
- ajax (1)
- mysql (0)
- eclipse (2)
- eclipse插件开发 (3)
- 软件工程 (5)
- ant (6)
- 开源包 (6)
- 学习网站 (7)
- Struts2 (18)
- JSP (1)
- 持续集成 (4)
- FreeMaker (6)
- 工作项目点点 (4)
- Maven2 (6)
- JQuery (1)
- 日志记录 (9)
- 工作流 (4)
- BPEL (1)
- extJs (1)
- 组件 (1)
- OSGI (10)
- ESB总线学习 (1)
- 错误解决 (2)
- JMX (3)
- 网络知识 (1)
最新评论
-
duanlongk:
这个问题解决了么?
java.lang.NoClassDefFoundError: org/apache/tuscany -
sotrip:
从上面结果来看,HelloWorld.class是由虚拟机的内 ...
如何实现自己的classloader -
zengsir2008:
哎,不太明白。。。。
OSGI DS 实例 -
ralfsumahe:
...
使用XFire开发Web Service客户端完整入门教程 -
liuqiao_0702:
...
osgi spring hibernate =
一、实验环境
win2k + jdk1.6 + javee5.0 + Myeclipse5.1
jdk和javee5.0均可从http://java.sun.com/javase/downloads/index.jsp下载,安装文件名为jdk-6-windows-i586.exe,java_ee_sdk-5_02-windows.exe;没有myeclipse的也可以用eclipse代替,只要ide能执行ant脚本就可以.
二、第一个最简单的例子
jsee5安装以后会在系统中建立一个Application Serverpe9,这是sun自带的网络服务器,和tomcat、weblogic的性质类似。
在D:\Sun\SDK\samples\javaee5\webservices\hello-jaxws下有一个自带的web service入门例子,(D:\Sun\SDK\为我机器上javaee5的安装路径)
我们就先实验它,来理解webservice的本质
1、把jdk的安装路径如D:\Java\jdk1.6.0\bin 加到系统的path环境变量中
2、运行sun自带的网络服务器,具体方法为
开始->程序->Sun Microsystems->Application Server PE 9->Start Default Server
然后当弹出的cmd窗口中出现提示“按任意键继续时”输入回车,窗口会关闭,此时在浏览器输入http://localhost:8080,应该出现如下内容:
Sun Java System Application Server Platform Edition 9.0
Your server is up and running!
说明服务器已经启动了
3、在Myeclipse打开刚才的例子目录D:\Sun\SDK\samples\javaee\webservices\hello-jaxws下的build.xml文件,这个一个ant脚本,具体含义我们以后再讲,现在先执行它
4、在build.xml文件中单击右键,在弹出菜单中选择"run as"->"1 antbuild",此时build.xml里的内容会被执行,在Myeclipse的console中会输出:
buildfile: D:\Sun\SDK\samples\javaee5 \webservices\hellojaxws\build.xml
init:compile-deploy-service:
[echo] d:/Sun/SDK
get-artifacts-windows:
get-artifacts-unix:
get-artifacts:
compile-client:
[javac] Compiling 1 source file to D:\Sun\SDK\samples\javaee5\webservices\hello-jaxws\build
run-client-windows:
[exec] Hello result = Hello Administrator!
run-client-unix:
run-client:
all:
BUILD SUCCESSFUL
Total time: 43 seconds
其中
[exec] Hello result = Hello Administrator!
的输出结果说明客户端调用服务器的webservice已经成功。
第一个例子就完成了。我们下面会对这个例子进行详细讲解.
三、例子源代码剖析
D:\Sun\SDK\samples\javaee5\webservices\hello-jaxws(以后简称为hello-jaxws)
项目里的源文件只有三个:(1) hello-jaxws\src\endpoint\Hello.java 提供webservice的服务器端实现类(2)hello-jaxws\src\client\Client.java 调用webservice的客户端测试类(3)hello-jaxws\build.xml 自动编译的ant脚本
下面我们把这三个文件的内容看一下
1、服务器端的service实现类文件Hello.java,
/* src\endpoint\Hello.java文件的内容 */
package endpoint;
import javax.jws.WebService;
@WebService
public class Hello
{
public String getHello(String name)
{
return "Hello " + name + "!";
}
}
有这个文件可以看出,编写一个service的实现类,把编写普通的java类差不多,只不过又多了三点:
①要在该类前一个@WebService说明,
②引入javax.jws.WebService;
③在公开的方法前加@WebMethod说明,如果不加的话,所有的public方法都会自动变成service的对外接口.
2、客户端测试类的实现文件
package client;
import javax.xml.ws.WebServiceRef;
import endpoint.HelloService;
import endpoint.Hello;
public class Client
{
@WebServiceRef(wsdlLocation="http://localhost:8080/Hello/HelloService?WSDL")
static HelloService service;
public static void main(String[] args)
{
Client client = new Client();
client.doHello();
}
public void doHello()
{
try
{
Hello port = service.getHelloPort();
String ret = port.getHello(System.getProperty("user.name"));
System.out.println("Hello result = " + ret);
}catch(Exception e){
e.printStackTrace();
}
}
}
客户端调用代码要点为:
①导入WebServiceRef包
import javax.xml.ws.WebServiceRef;
②导入本地生成的stub类,另外编译时也要指明stub类的路径
import endpoint.HelloService;
import endpoint.Hello;
③指明服务器的wsdl路径
@WebServiceRef(wsdlLocation="http://localhost:8080/myhello/HelloService?WSDL")
④声明一个静态的service对象
static HelloService service;
⑤对要调用的远程方法声明一个代理对象,通过代理来调用真正的远程方法
Hello port = service.getHelloPort();
String ret = port.getHello(System.getProperty("user.name"));
3、ant 脚本build.xml
<!-- ant 脚本build.xml的内容 -->
<?xml version="1.0" encoding="UTF-8"?>
<project name="hello-jaxws" default="all" basedir=".">
<!-- include user specific build properties -->
<!-- 导入预先j2ee预先写好的设置文件--> <property file="../../../bp-project/build.properties"/>
<property file="${user.home}/build.properties"/>
<property file="../../../bp-project/app-server.properties"/> <!-- 设置发布目录和类的输出目录 -->
<property name="autodeploydir" value="${javaee.domaindir}/autodeploy"/>
<property name="classesdir" value="./build"/> <!-- 设置java的类库路径 -->
<path id="classpath">
<pathelement location="${javaee.home}/lib/j2ee.jar"/>
<pathelement location="${classesdir}"/>
</path> <!-- 项目的最终任务 -->
<target name="all" depends="run-client"> <!--antcall target="restore"/--> </target>
<!-- 测试操作系统环境-->
<target name="init">
<condition property="windows">
<os family="windows" />
</condition>
<condition property="unix">
<os family="unix" />
</condition>
</target>
<!-- 编译服务器端并把它自动发布到sun的服务器上 -->
<target name="compile-deploy-service" depends="init">
<mkdir dir="${classesdir}"/>
<echo message="${javaee.home}"/>
<javac srcdir="./src" includes="endpoint/**" destdir="${autodeploydir}" classpath="${javaee.home}/lib/j2ee.jar"/>
<waitfor maxwait="100" maxwaitunit="second">
<or>
<available file="${autodeploydir}/endpoint/Hello.class_deployed"/>
<available file="${autodeploydir}/endpoint/Hello.class_deployFailed"/>
</or>
</waitfor>
<condition property="deploy_succeeded">
<available file="${autodeploydir}/endpoint/Hello.class_deployed"/>
</condition>
<condition property="deploy_failed">
<available file="${autodeploydir}/endpoint/Hello.class_deployFailed"/>
</condition>
</target>
<target name="get-artifacts" depends="compile-deploy-service,get-artifacts-windows,get-artifacts-unix"/>
<!-- 生成客户端所需的stub -->
<target name="get-artifacts-windows" if="windows">
<exec executable="${javaee.home}/bin/wsimport.bat">
<arg line="-keep -d ${classesdir} http://${javaee.server.name}:${javaee.server.port}/Hello/HelloService?WSDL"/>
</exec>
</target>
<target name="get-artifacts-unix" if="unix">
<exec executable="${javaee.home}/bin/wsimport">
<arg line="-keep -d ${classesdir} http://${javaee.server.name}:${javaee.server.port}/Hello/HelloService?WSDL"/>
</exec>
</target>
<!-- 编译客户端 -->
<target name="compile-client" depends="get-artifacts">
<javac srcdir="./src/client" destdir="${classesdir}">
<classpath refid="classpath"/>
</javac>
</target>
<target name="run-client" depends="compile-client,run-client-windows,run-client-unix"/>
<!-- 执行客户端 -->
<target name="run-client-windows" if="windows">
<exec executable="${javaee.home}/bin/appclient.bat" dir="${classesdir}">
<arg value="client.Client"/>
</exec>
</target>
<target name="run-client-unix" if="unix">
<exec executable="${javaee.home}/bin/appclient" dir="${classesdir}" failifexecutionfails="false">
<arg value="client.Client"/>
</exec>
</target>
<!-- 以下几个任务用与清理和卸载-->
<!-- 删除生成的类文件-->
<target name="clean">
<delete dir="${classesdir}"/>
</target>
<!-- 删除和卸载服务器的webservice-->
<target name="restore">
<delete>
<fileset dir="${autodeploydir}/endpoint" includes="Hello*.*"/>
</delete>
</target>
<target name="undeploy">
<antcall target="restore"/>
</target>
</project>
发表评论
-
CXF+JAXB发布获取web
2009-03-26 09:50 2948CXF有多种数据绑定方式,如:Aegis Databindi ... -
StAX介绍
2009-03-10 09:55 2069Streaming API for XML (StAX) 是用 ... -
JAXB2.0
2009-03-10 09:28 3663WEB Service CXF实战3-服务实现 版权声明:转载 ... -
webservice学习
2008-12-30 11:03 1316webservice:[定义]建立可互操作的、分布式应用程序的 ... -
XFire客户端流程分析
2008-12-25 17:25 2609XFire是当前J2EE领域非常 ... -
使用XFire开发Web Service客户端完整入门教程
2008-12-25 17:22 5442虽然XFire现在已经被CXF取代,但在现在已经开发的项目中, ... -
XFire在spring中应用
2008-12-25 10:29 2044xfire在spring的应用: xfire在spri ... -
XFire集成spring和单元测试
2008-12-25 10:12 1859http://www.springside.org.cn/do ... -
使用xfire开发jsr181风格的web服务
2008-12-25 10:09 1670JSR 181通过标准化一个易于学习且可以快速开发的Web服务 ... -
Eclipse构建WebServices(XFire )
2008-12-25 09:57 4265开发环境Sun Java 5+ Eclipse 3.2 +My ... -
浅谈SOAP
2008-12-24 14:36 995随着计算机技术的不断 ... -
WSDL样式详解
2008-12-24 14:34 2142http://www.blogjava.net/orangel ... -
apache soap
2008-07-30 17:17 1615******************************* ... -
关于web.xml详细说明
2008-07-30 14:15 1215本节描述用作J2EE环境组 ... -
JavaSE6.0 Web Service学习笔记(引用)
2008-04-05 17:46 1195Web Service概述 Web Service ... -
使用XFire+Spring构建Web Service
2008-04-05 17:43 9797XFire是与Axis 2并列的新 ...
相关推荐
WebService接口封装ant脚本,一看就懂!
- 使用Ant与CXF结合,可以通过CXF的Ant任务(如`cxf-codegen`)自动生成服务客户端和服务端代码。 - 在`build.xml`中配置CXF的类路径和相关参数,以便Ant能够正确地生成和部署服务。 5. **工具的配合**: - IDE...
### WebService入门教程知识点详解 #### 一、WebService概述 1. **定义**: - WebService是一种跨编程语言和操作系统平台的远程调用技术,它允许程序通过HTTP协议访问远程服务器上的应用服务资源。 - WebService...
WebService入门简单实例(采用AXIS的方式) WebService是一种基于XML的开放标准,用于在不同系统间交换数据和服务。它允许不同的应用程序、操作系统甚至编程语言之间进行互操作,通过HTTP协议进行通信,实现分布式...
【标题】:WebService入门教程 - Java WebService 【描述】:本教程旨在引导初学者了解如何使用Eclipse集成开发环境来发布基于Java语言的WebServices服务。WebServices是一种允许不同系统之间进行交互和数据交换的...
WebService入门教程简单入门教程 .
【C# WebService入门实例详解】 在.Net平台上,利用C#语言开发WebService是构建分布式应用程序的一种常见方式。本文将引导初学者逐步了解如何创建和调用WebService,涵盖基本概念、特性以及具体步骤。 1. ...
本篇将详细介绍Java WebService的入门实例,包括其工作原理以及如何创建和测试一个简单的WebService。 1. **WebService工作原理-SOAP** SOAP(Simple Object Access Protocol)是WebService通信的基础,它是一种...
Web服务(WebService)是一种基于互联网的,用于应用程序之间交互的技术标准。它允许不同的系统通过网络进行数据交换,实现跨平台的互操作性。本入门教程将带你了解如何使用XFire库来创建和消费Web服务。 首先,让...
【WebService与SQL的结合使用】 WebService是一种基于互联网的、平台无关的分布式计算模式,它允许不同系统间的应用程序通过网络进行通信。SQL(Structured Query Language)是用于管理关系数据库的标准语言,用于...
在WebService入门教程中,通常会介绍以下几个关键知识点: 1. XML:WebService使用XML作为数据交换的格式,因此首先要了解XML的基本概念,包括标签、元素、属性等。 2. SOAP:这是一种基于XML的协议,用于在网络上...
这是一个关于WebService的学习文档,适合初学者。
在本示例“webservice入门demo”中,我们主要关注的是如何使用C#语言来开发一个简单的Web服务以及相应的客户端测试。 1. **Web服务的概念**: Web服务是一种基于XML(Extensible Markup Language)的协议,它使用...
【WebService入门】是一个针对初学者精心制作的压缩包资源,旨在帮助学习者快速掌握Web服务的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的互联网通信协议,它允许不同系统和应用程序之间进行...
java开发webservice入门最全讲解demo
它支持基于XML和基于契约优先的开发模式,也可以与Spring Boot结合使用。 本资源的"Java的webservice入门"视频教程很可能涵盖了以下内容: - Web Service的基本概念和工作原理 - 如何创建和发布一个简单的SOAP或...
WebService的主要目标是实现异构平台间的互操作性,使得不同平台上的应用可以通过网络互相调用。 在.NET框架和C#语言的上下文中,WebService的开发和应用具有非常重要的地位。.NET提供了一整套用于创建和消费...