加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用XFire开发WebService入门教程

发布时间:2020-12-17 02:49:54 所属栏目:安全 来源:网络整理
导读:首先,我们在eclipse中建立一个WebService工程作为服务端,并编写如下代码: IHelloService.java? 服务接口,有一个方法,参数和返回值均为复杂类型User ? package ?test; public ? interface ?IHelloService? ... { ??? public ?User?getUser(User?user); }

首先,我们在eclipse中建立一个WebService工程作为服务端,并编写如下代码:

IHelloService.java? 服务接口,有一个方法,参数和返回值均为复杂类型User

?

package ?test;


public ? interface ?IHelloService? {

???
public?User?getUser(User?user);

}

?

User.java

注意,这个javabean里必须要有一个默认没有参数的构造方法,否则在进行aegis绑定会有不能实例化user对象的异常

package ?test;


import ?java.io.Serializable;


public ? class ?User {

??
private?String?username;

??
private?String?password;

??
public?User(){

??????

??}

public?User(String?username,?String?password)?{

????
super();

????
this.username?=?username;

????
this.password?=?password;

}

public?String?getPassword()?{

????
return?password;

}

public?void?setPassword(String?password)?{

????
this.password?=?password;

}

public?String?getUsername()?{

????
return?username;

}

public?void?setUsername(String?username)?{

????
this.username?=?username;

}

}

HelloServiceImpl.java

方法实现是传进来一个user对象,把这个对象的username,password变成我们设置的数值,然后返回这个对象

package ?test;


public ? class ?HelloServiceImpl? implements ?IHelloService? {


????
public?void?print()?{

????????System.out.println(
"action");


????}


????
public?User?getUser(User?user)?{

????

????????user.setUsername(
"new?name");

????????user.setPassword(
"new?password");

????????
return?user;

????}


}

IHelloService.aegis.xml 为复杂参数和返回类型绑定,和IHelloService在一个包下

?

<? xml?version="1.0"?encoding="UTF-8" ?>


< mappings >

????
< mapping >

????????
< method? name ="getUser" >

????????????
< parameter? index ="0" ?componentType ="test.User" />

????????????
< return-type? componentType ="test.User" />


????????
</ method >

??

??????

????
</ mapping >

</ mappings >



services.xml? xFire发布文件

?

<? xml?version = " 1.0 " ?encoding = " UTF-8 " ?>



< beans >

< service?xmlns = " http://xfire.codehaus.org/config/1.0 " >

< name > HelloService </ name >

< namespace > http: // test/HelloService</namespace>

< serviceClass > test.IHelloService </ serviceClass >

< implementationClass > test.HelloServiceImpl </ implementationClass >


</ service >

</ beans >

?

部署到tomcat中,在浏览器中运行http://localhost:8080/XFire/services/HelloService?wsdl

如果部署正确,讲出现XFire生成的wsdl文件

?

把IHelloService.java,IHelloService.aegis.xm,User.java打包成jar

下面,我们编写消费WS的客户端

?

新建一个java工程,把服务端的jar放到classpath中,当然,服务和客户端都要有XFire的类库

编写代码

?

package ?test;

import ?java.net.MalformedURLException;


import ?org.codehaus.xfire.client.XFireProxyFactory;

import ?org.codehaus.xfire.service.Service;

import ?org.codehaus.xfire.service.binding.ObjectServiceFactory;


import ?test.IHelloService;

import ?test.User;






public ? class ?Client? {


????
/**

?????*?
@param?args

?????
*/

????
public?static?void?main(String[]?args)?{

????????User?user
=new?User("2","2");

????????String?serviceURL
="http://localhost:8080/XFire/services/HelloService";

????????Service?serviceModel?
=?new?ObjectServiceFactory().create(IHelloService.class,null,"http://test/HelloService",null);

????????XFireProxyFactory?serviceFactory?
=?new?XFireProxyFactory();

????????IHelloService?service?
=?null;????

?????????
try?{

????????????service?
=?(IHelloService)?serviceFactory.create(serviceModel,?serviceURL);

?????????

????????????user
=service.getUser(user);

????????????

????????????System.out.println(user.getUsername()
+"?-?"+user.getPassword());

?????????}
?catch?(MalformedURLException?e)?{


????????????e.printStackTrace();

????????}

????}


}

?

在tomca安装目录下的bin中启动tomcat(注意不要使用eclipse环境中的启动插件,否则运行客户端时候会自动关掉服务)

?

运行结果:

new name - new password

真是我们想要的结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读