一个简单的webService演示(入门)
???????????????????????????? 创建服务器端: ?1:加载的jar如下: ?????????? ??????? ? 备注: ????????? 包的来源可以从这里去下载:http://xfire.codehaus.org/Download ? ???????????? ? ?????????? 解压后将lib里面所以的包以及xfire-all-1.2.6.jar导入到项目中去。 ? 2:新建一个web project,然后创建一个接口类和一个实现该接口的类 ??? 结构图如下所示: ??????????????????????????????????????????? ???? ???? 演示代码如下: ???????? IBasic.java ??????????????? package org.baicai.ws.basic; ? ??????????????? public? interface IBasic { ??? ??? ????????? ? publicint saveNumber(int i,int j); ? ???????????????? } ????????BasicImpl.java ??????????????? package org.baicai.ws.basic; ? ?????????????? publicclass BasicImpl implements IBasic { ? ??? ???????? ?@Override ??? ??????? ? publicint saveNumber(int i,int j) { ?????? ????? ? return i+j; ??? ?????? ?? } ?????????? } ? ? ? 3:创建一个service.xml文件,并对其进行设置 ????? 3.1:在src目录下新建一个WETA-INF文件 ????? 3.2:在WETA-INF文件中再新建一个xfire文件夹 ????? 3.3:在xfire文件夹中创建一个service.xml文件 ??????????? ? 目录结构如下: ???????????????????????????????????????????????????????? ? ???? 3.4:对services.xml文件进行配置 ??????????? 文件配置如下: ????????????????????????????????????????<?xml version="1.0" encoding="UTF-8"?> ??????????????????????????????????????????????????????????? <beans xmlns="http://xfire.codehaus.org/config/1.0"> ??? ??????????????????????????????????????????????????? ????<service> ???????? ????????????????????????????????????????????????????? ??<name>TestService</name> ???????? ??????????????????????????????????????????????????????? ?<namespace>http://org/baicai/ws/basic/IBasic</namespace> ????????????????????????????????????????????????????????????? ?? ??<serviceClass>org.baicai.ws.basic.IBasic</serviceClass> ????????????????????????????????????????????????????????????????? <implementationClass>org.baicai.ws.basic.BasicImpl</implementationClass> ?????????????????????????????????????????????????????? ?? ?</service> ????????????????????????????????????????????????? </beans> ? 4:对web.xml文件进行配置 ??? 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> ? 5:服务器端部署 ?????5.1:部署你的应用。 ???? 5.2:访问http://ip:port/projectName /services ???? 5.3:? 点击查看wsdl,能看到一串xml代码就表示服务程序有及部署通过 ??????????? ? 结果如下: ???????????????????????????????? ?????????????????????????????? ? ? ?????????????????????????????????????????????????? 创建客户端: ?1:将服务端的应用打包成jar: ????? 打包方式可见:http://www.voidcn.com/article/p-rdatzarw-mh.html ? 2:加载的jar:服务端应用所用的jar和新打的服务端jar包 ? 3:新建一个客户端项目 ? 4:测试服务端提供的接口 ??????? ?4.1:新建一个测试类 ??????? 4.2:调用服务端提供的接口 ??????? 4.3:测试是否调用成功 ?????? ???????? 客户端项目结构如下: ????????????????????????????????????????????????????????????????????????????? 测试类如下: package org.baicai.ws.test; ? import java.net.MalformedURLException; ? import org.baicai.ws.basic.IBasic; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; ? publicclass MyClient { ??? ??? publicstaticvoid main(String[] args) { ???????????????????????? //参数说明:调用接口类,服务端项目名称(service.xml文件中的name),表空间 ?????????????????????? ?Service serviceModel=new ObjectServiceFactory().create????????????? (IBasic.class,"TestService","http://org/baicai/ws/basic/IBasic",null); ?????? try { ????????????????????????? //参数说明:服务对象,访问路径(http://ip:port/projectName/services/服务端项目名称) ??????????????????????? ? IBasic service=(IBasic) new XFireProxyFactory().create???????????????????????????????????? (serviceModel,"http://192.168.104.35:8088/TestXFire/services/TestService"); ?????????? System.out.println(service.saveNumber(2,3)); ?????? } catch (MalformedURLException e) { ?????????? e.printStackTrace(); ?????? } ??? } } ? ?附录:可能会遇到的问题以及解决方案 服务端: ???? 1:java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist ? 原因:services.xml文件不存在或者是services.xml文件存放路径错误。 ? 解决方案:见创建服务端第三步 ? ? 客户端: ? 1:404 错误。 ????? Caused by: org.codehaus.xfire.XFireRuntimeException: Server returned error code = 404 for URI :…… ?? 原因:提供代理类的URL不正确 ?? 解决方案:给代理类正确的URL。这里是没有指定服务端名称……/services/ TestService ? 2:无法连接,导致信息不能发送。 Caused by: org.codehaus.xfire.XFireException: Couldn't send message. Caused by: java.net.ConnectException: Connection refused: connect ? 原因:服务端没有部署 ? 解决方案:部署服务端,也就是可以正常的访问http://ip:port/projectName /services 。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |