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

webservice demo

发布时间:2020-12-17 00:24:11 所属栏目:安全 来源:网络整理
导读:1.下载需要的xfire包? 下载地址 : http://xfire.codehaus.org/Download ,下载xfire-distribution-1.2.6.zip文件,并解压。? 新建web项目,取名TestXFire,将解压目录下的xfire-all-1.2.6.jar和lib目录下的所有包导入到项目中。? ? 2.创建类? 使用接口的设

1.下载需要的xfire包?
下载地址http://xfire.codehaus.org/Download ,下载xfire-distribution-1.2.6.zip文件,并解压。?
新建web项目,取名TestXFire,将解压目录下的xfire-all-1.2.6.jar和lib目录下的所有包导入到项目中。?
?
2.创建类?
使用接口的设计是一个好的实践,所以先创建接口:ITestService,代码如下:
package com.gdie.xfire.example;?
//该接口提供一个方法,用于计算?
public interface ITestService {?
?public int add(int p1,int p2);?
}?
创建接口实现类?
package com.gdie.xfire.example;?
?
public class TestService implements ITestService {?
?
?public int add(int p1,int p2) {?
? // TODO Auto-generated method stub?
? return p1 + p2;?
?}?
?
}?
3.创建META-INF文件夹?
简便起见,将WebRoot下的META-INF文件夹复制到项目的src下,这样的话会在部署发布目录下web-inf下的classes下自动建立META-INF,而同时WebRoot下也有一个META-INF文件夹,这两个容易混淆,实际webservice下真正起作用的是web-inf下的classes下的META-INF,所以,关键是在项目的src下面有META-INF这个文件夹,并定义里面的内容,与WebRoot下META-INF无关。?
然后在src下的META-INF建立xfire子文件夹,里面建立一名叫services.xml配置文件,配置如下:??


<?xml version="1.0" encoding="UTF-8"?>??
?
<beans xmlns="http://xfire.codehaus.org/config/1.0">??
?
<service>??
?
?? <name>TestService</name>??
?
?? <namespace>http://com/gdie/xfire/example/ITestService</namespace>??
??
?? <serviceClass>com.gdie.xfire.example.ITestService</serviceClass>??
?
?? <implementationClass>com.gdie.xfire.example.TestService</implementationClass>??
?
</service>??
?
</beans>??


注意:包文件路径com.gdie.xfire.example.ITestService等需要正确对应。?
关键是在src下面要有META-INF文件夹和里面的文件,否则会报找不到services.xml错误而加载不了项目。??
?
4.修改web.xml?
配置文件关键是定义XFireServlet,对应代码如下:??
?
<?xml version="1.0" encoding="UTF-8"?>??
?
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"??
?
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
?
??? xsi:schemaLocation="http://java.sun.com/xml/ns/javaee??
?
??? http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">??
??? <welcome-file-list>??
?
?????? <welcome-file>index.jsp</welcome-file>??
?
??? </welcome-file-list>??
?
??? <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>/services/*</url-pattern>??
?
??? </servlet-mapping>??
?
</web-app>??


至此,服务器端部署完毕。完整的项目文件结构如图:?
??
?将项目加载进tomcat并启动tomcat,无异常。??
?
打开ie,输入??
http://localhost:8080/TestXFire/services/??
出现??
??
?表明部署成功,点wsdl可以看见一堆xml代码。??
?
5.客户端测试?
先将刚才建立的TestXFire整个项目打包成jar包(myeclipse的export),名为TestXFire.jar,再新建一个web项目TestXFireClient,导入xfire的包,和刚才的TestXFire工程的打包TestXFire.jar??
?
在src下新建一个测试类,代码如下:??


package com.gdie.xfire.test;?
?
import org.codehaus.xfire.service.Service;?
import org.codehaus.xfire.service.binding.ObjectServiceFactory;?
import org.codehaus.xfire.client.XFireProxyFactory;?
?
import com.gdie.xfire.example.ITestService;;?
?
public class MyClient {?
?public static void main(String[] args) {?
? try{?
?? Service serviceModel = new ObjectServiceFactory().create(?
???? ITestService.class,"TestService","http://com/gdie/xfire/example/ITestService",null);?
????
?? ITestService service = (ITestService) new XFireProxyFactory().create(?
???? serviceModel,"http://localhost:8080/TestXFile/services/TestService");?
????
?? System.out.println("返回值是:"+service.add(5,8));?
? }catch (Exception e) {?
?? // TODO: handle exception?
?? e.printStackTrace();?
? }?
?}?
}?


运行,输出结果是:??
返回值是:13?
则说明客户端成功。??
?
至此,webservice部署测试例子成功。?
?
【项目创建】
?
?
包名 做了一些修改。
?
这里只贴出比较关键的文件
?
【src/META-INF/xfire/services.xml】
?


<?xml version="1.0" encoding="UTF-8"?>??
?
<beans xmlns="http://xfire.codehaus.org/config/1.0">??
?
??? <service>??
?????
?????? <name>TestService</name>??
?????
?????? <namespace>http://com/feihuale/xfire/demo/ITestService</namespace>??
?????
?????? <serviceClass>com.feihuale.xfire.demo.ITestService</serviceClass>??
?????
?????? <implementationClass>com.feihuale.xfire.demo.TestService</implementationClass>??
?????
??? </service>??
?
</beans>??
?


【web.xml】
?
<?xml version="1.0" encoding="UTF-8"?>?
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"?
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
??? xsi:schemaLocation="http://java.sun.com/xml/ns/javaee??
??? http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">?
??? <welcome-file-list>?
?
??????? <welcome-file>index.jsp</welcome-file>?
?
??? </welcome-file-list>?
?
??? <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>/services/*</url-pattern>?
?
??? </servlet-mapping>?
?
</web-app>?

? 【客户端项目文件】 ? package com.feihuale.xfire.test;? ? import org.codehaus.xfire.client.XFireProxyFactory;? import org.codehaus.xfire.service.Service;? import org.codehaus.xfire.service.binding.ObjectServiceFactory;? ? import com.feihuale.xfire.demo.ITestService;? ? ? public class MyClient {? ? ??? /** ???? * @param args ???? */? ? ??? public static void main(String[] args) {? ??????? try {? ??????????? Service serviceModel = new ObjectServiceFactory().create(? ??????????????????? ITestService.class,? ??????????????????? "http://com/feihuale/xfire/demo/ITestService",null);? ? ??????????? ITestService service = (ITestService) new XFireProxyFactory()? ??????????????????? .create(serviceModel,? ??????????????????????????? "http://localhost:8080/TestXFire/services/TestService");? ? ??????????? System.out.println("返回值是:" + service.add(5,8));? ??????? } catch (Exception e) {? ??????????? // TODO: handle exception? ??????????? e.printStackTrace();? ??????? }? ??? }? }? ?

(编辑:李大同)

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

    推荐文章
      热点阅读