webService完整例子

首先说明:xfire和axis性能问题
xfire和axis进行比较的话,axis访问速度要快的多,即:axis性能更好(进行测试过)

发布webservice服务及生成客户端代码
使用Eclipse的第一种方式发布服务及生成客户端代码
一、发布webservice 服务:

1、新建项目
Eclipse中新建“动态web项目“

2、增加jar包
将 服务器端_lib目录下的所有jar包 拷贝到工程 lib下(或下载xfire-distribution-1.1.2.zip,),
下载地址:http://xfire.codehaus.org/Download
解压后出现xfire-1.1.2文件夹,将此文件夹下的xfire-all-1.1.2.jar和lib下的所有jar包拷贝到 工程lib下)
用到的jar包如下图:


3、在WebContent下的META-INF目录下 新建xfire文件夹,然后在xfire下建立services.xml,再把整个META-INF目录拖到WEB-INF目录下,目录结构如图:


4、配置services.xml
配置services.xml 将要发布的服务配置一下,下面是发布一个服务类的配置代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>serv</name>
<namespace>http://www.com.service/jie</namespace>
<serviceClass>ser.ServImpl</serviceClass>
</service>
</beans>

5、配置web.xml
将下面配置复制到web.xml中即可 :

<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

6、新建Server 用以部署工程
new 一个 Server ,然后 在工程下右击 》 Run As 》 Run on Server 选择 刚才new的server 运行即可
,加入 工程叫做:test ,打开浏览器输入URL:http://localhost:8080/test/services/serv?wsdl,如果显示wsdl描述那就成功了


二、生成客户端代码:

1、生成客户端代码
Eclipse下新建一个 Web Service Client 下一步 》在 Service definition 文本框输入http://localhost:8080/test/services/serv?wsdl 》 next 》 选择客户端代码放到哪个工程下(在下拉框选择即可)
2、使用客户端调用服务器端的服务
注意:调用服务时一定保证服务器端工程部署在应用服务器下 并且已经启动
因为sebservices.xml中定义了命名空间:<namespace>http://www.com.service/jie</namespace>,所以生成的客户端代码会放在
service.com.www.jie包下(这是Eclipse根据命名空间自动生成的),该包下会生成一些相关的类,此时我们只需要关心一个代理类即可,因为sebservices.xml中定义了 服务名:<name>serv</name> ,所以生成的类的前缀都是 serv(S会变成大写)开头,我们只关心名称为SerPortTypeProxy的代理类,使用方法如下:

SerPortTypeProxy Proxy = new SerPortTypeProxy (); 有了这个代理类我们就可以像在服务器端使用服务类一样调用方法了。


使用Eclipse的第二种方式发布服务及生成客户端代码
一、发布服务
1、发布服务
我们有个动态web项目,里面的某个(和多个)类要发布成webservice服务,假如该类放在test包下,类名为:Myserver ,那么我们就可以这样做:new 一个 Web Service 如下:
选中要发布的类


New 一个Web Service如下图:


点击next 显示如图:(此时在Service implementation框中已经写好test.Myserver)


点击next 选择要发布的方法 如图:

点击 Finish 服务发布完成了。
此时,WebContent下会生成一个wsdl文件夹,该文件夹下生成一个名为:Myserver.wsdl
描述文件(Myserver和我们的服务类名称一样,wsdl为后缀名),该文件便是webservice描述文件,里面已经生成了描述配置,
同时,WEB-INF下生成一个名为:MyserverService文件夹,该文件夹下有一些描述文件,
同时,web.xml中已生成好相关的配置
同时,需要的jar包已经加到工程里,可以去Eclipse工作空间 》工程的lib下去看看
此时的目录结构如下图:

Jar包如下图:

2、新建应用服务器Server
新建server是为了部署工程,因为只有部署到应用服务器中并且应用服务器已启动才能生成客户端
二、生成客户端代码
1、启动应用服务器,
打开浏览器输入URL:
http://localhost:8080/xucuotao/services/Myserver?wsdl 如果描述语言显示出来那么发布服务OK了
2、新建Web S ervice Client 生成客户端代码
选中要存放客户端代码的客户端工程 如图:


New 一个Web S ervice Client 如下图:


点击 next 在Service definition 框输入URL 如下图:


点击 next 在 output folter 下拉框选择 存放客户端代码的工程 如下图:


点击 Finish 客户端代码生成OK了
此时,客户端工程的src目录下生成test目录 该目录下是生成的一些客户端类 如图:


我们只关注其中的MyserverProxy代理类(Myserver和服务类名称一样,后面是proxy,说明是一个代理类),至于如何调用请阅读下面文字

3、客户端调用webservice服务
再生产的一些类中,我们只关注其中的MyserverProxy代理类,使用方法如下:
有了该代理类就像在服务器端 使用 服务类一样,直接调用方法即可 如下:
MyserverProxy proxy =new MyserverProxy();
public class Test {

public static void main(String[] args) {
MyserverProxy proxy =new MyserverProxy();

try {
System.out.println(proxy.getDateBase("zhaoshijie赵士杰"));
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

运行结果如下图:


三、使用MyEclipse发布webservice服务及生成客户端代码
1、发布服务
直接新建 Web Service Project 如下图:


然后新建Web Service (注意要用 MyEclipse 下的 Web Service) 如下图:


点击 next 选择服务类 放到哪个工程 如下图: 放到 ser 工程
并打钩 create new java bean (意思是建立一个新的服务类)


点击 next 在seb service name 框输入:Myservice
在 java package 新建服务类存放的包:serviceTest 此时如下图:


点击 Finish 完成了
2、生成客户端代码
有时间写一下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值