当前位置: 首页 > news >正文

上海门户网站论坛wordpress 本地文章

上海门户网站论坛,wordpress 本地文章,专业的培训行业网站模板,网站备案多久可以注销简介 WebService是一种服务的提供方式#xff0c;通过WebService#xff0c;不同应用间相互间调用变的很方便#xff0c;网络上有很多常用的WebService服务#xff0c;如#xff1a;http://developer.51cto.com/art/200908/147125.htm#xff0c;不同的语言平台对…简介               WebService是一种服务的提供方式通过WebService不同应用间相互间调用变的很方便网络上有很多常用的WebService服务如http://developer.51cto.com/art/200908/147125.htm不同的语言平台对WebService都有实现Java的WebService实现比较流行的有Axis2、Jaxws本文介绍的是Axis2。 Axis2下载和部署        Axis2是Apache开发的一个开源项目再次感叹Apache的伟大        下载地址        http://mirror.bit.edu.cn/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-war.zip        将其内axis2.war解压到Tomcat安装目录/webapps下启动Tomcatwar包会自动解压        访问http://localhost:8080/axis2/如果看到欢迎主页则说明部署成功。 配置Axis2        Tomcat安装目录/webapps/axis2/WEB-INF/conf/axis2.xml配置其内两个属性以便调试。   [html] view plaincopy print? parameter namehotdeploymenttrue/parameter!-- 开启热部署不需要重启即可部署服务 --  parameter namehotupdatetrue/parameter!-- 开启热更新不需要重启即可更新服务 --     编写服务        所谓服务就是编写一个类写一些方法方法返回数据WebService客户端获取数据。 [java] view plaincopy print? public class HelloService {        public String sayHello() {          return hello;      }        }   0配置POJO发布服务        服务类创建好后我们需要发布到服务器上将HelloService.class放到Tomcat安装目录/webapps/axis2/WEB-INF/pojo下pojo没有需要创建。        至此我们已经成功的创建了一个WebService服务了so easy        再次访问http://localhost:8080/axis2/点击Services可以发现可用services中多了一个HelloService其内有一个可用操作sayHello说明发布成功。   [java] view plaincopy print? HelloService    Service Description : No description available for this service    Service EPR : http://localhost:8080/axis2/services/HelloService    Service Status : Active      Available Operations  sayHello          访问http://localhost:8080/axis2/services/HelloService页面输出正是我们的返回值。     [html] view plaincopy print? ns:sayHelloResponse xmlns:nshttp://ws.apache.org/axis2  returnhello/return  /ns:sayHelloResponse          这里有两点需要注意          - POJO发布的类不能放在包里既不能使用package关键字        - 默认的发布目录是pojo可以在Tomcat安装目录/webapps/axis2/WEB-INF/conf/axis2.xml中增加目录   [html] view plaincopy print? deployer extension.class directory要增加的目录名称 classorg.apache.axis2.deployment.POJODeployer /            要注意多个目录见WebService要唯一否则会重名重名后先部署的会成功后部署的会报错。 services.xml配置文件发布服务        虽然POJO的方式不需要配置文件但是其服务类不能放在包内显然是不符合我们日常开发的Axis2也允许带包的类发布WebService如果不允许估计就没人用了。        首先写一个较复杂的服务类多个方法带参数有返回值的。   [java] view plaincopy print? package webservice.test;    /**  * 计算器运算  *   * author gaoshuang  */  public class CalculateService {        // 加法      public float plus(float x, float y) {          return x  y;      }        // 减法      public float minus(float x, float y) {          return x - y;      }        // 乘法      public float multiply(float x, float y) {          return x * y;      }        // 除法      public float divide(float x, float y) {          if (y ! 0)              return x / y;          else              return -1;      }  }          然后编写services.xml该文件需要放在META-INF文件夹下。     [html] view plaincopy print? ?xml version1.0 encodingUTF-8?  !-- 服务名称 --  service nameCalculateService      !-- 服务描述 --      description          加减乘除计算服务      /description      !-- 设置服务类 --      parameter nameServiceClass          com.runqianapp.webservice.test.CalculateService      /parameter      !-- 方法 --      operation nameplus          !-- 方法处理器RPCMessageReceiver为带返回值的处理器                       RPCInOnlyMessageReceiver为不带返回值的处理器 --          messageReceiver mephttp://www.w3.org/2004/08/wsdl/in-out              classorg.apache.axis2.rpc.receivers.RPCMessageReceiver /      /operation      operation nameminus          messageReceiver mephttp://www.w3.org/2004/08/wsdl/in-out              classorg.apache.axis2.rpc.receivers.RPCMessageReceiver /      /operation      operation namemultiply          messageReceiver mephttp://www.w3.org/2004/08/wsdl/in-out              classorg.apache.axis2.rpc.receivers.RPCMessageReceiver /      /operation      operation namedivide          messageReceiver mephttp://www.w3.org/2004/08/wsdl/in-out              classorg.apache.axis2.rpc.receivers.RPCMessageReceiver /      /operation  /service            最后将这两个文件打成jar包不论用工具还是手动打打的都是最外层的文件夹。                我打的名字是server.jar更改后缀为aar所以最后是server.aarAxis2建议使用aar发布WebService        将server.aar放到Tomcat安装目录/webapps/axis2/WEB-INF/services下访问http://localhost:8080/axis2/services/listServices        多出了一个CalculateService说明发布成功。   [java] view plaincopy print? CalculateService    Service Description : CalculateService    Service EPR : http://localhost:8080/axis2/services/CalculateService    Service Status : Active      Available Operations  divide  plus  minus  multiply          分别访问          http://localhost:8080/axis2/services/CalculateService/plus?x1y2        http://localhost:8080/axis2/services/CalculateService/divide?x1y2        http://localhost:8080/axis2/services/CalculateService/minus?x1y2        http://localhost:8080/axis2/services/CalculateService/multiply?x1y2       也可以发布多个WebService可以使用serviceGroup标签。   [html] view plaincopy print? serviceGroup  service namemyService1      ...  /service  service namemyService2      ...  /service  /serviceGroup   客户端实现          以上介绍的都是WebService服务创建及发布那么有了一个WebService服务后我们如何调用呢只在浏览器上访问是没有意义的。        下载Axis2客户端压缩包http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip并解压。        新建工程WebServiceClientTest将Axis2客户端安装目录/lib下所有jar包添加到工程中        编写客户端代码   [java] view plaincopy print? package webservice.client.test;    import javax.xml.namespace.QName;    import org.apache.axis2.AxisFault;  import org.apache.axis2.addressing.EndpointReference;  import org.apache.axis2.client.Options;  import org.apache.axis2.rpc.client.RPCServiceClient;    public class Client1 {        /**      * param args      * throws AxisFault      */      public static void main(String[] args) throws AxisFault {          // 使用RPC方式调用WebService          RPCServiceClient serviceClient  new RPCServiceClient();          Options options  serviceClient.getOptions();          // 指定调用WebService的URL          EndpointReference targetEPR  new EndpointReference(                  http://localhost:8080/axis2/services/CalculateService);          options.setTo(targetEPR);          // 调用方法的参数值          Object[] entryArgs  new Object[] {1, 2};          // 调用方法返回值的数据类型的Class对象          Class[] classes  new Class[] { float.class };          // 调用方法名及WSDL文件的命名空间          // 命名空间是http://localhost:8080/axis2/services/CalculateService?wsdl中wsdl:definitions标签targetNamespace属性          QName opName  new QName(http://test.webservice, plus);          // 执行方法获取返回值          // 没有返回值的方法使用serviceClient.invokeRobust(opName, entryArgs)          Object result  serviceClient.invokeBlocking(opName, entryArgs, classes)[0];          System.out.println(result);          // out: 3.0      }    }          以上是实现了一个简单的WebSerivce客户端调用CalculateService中的plus方法由代码可见这种调用方式比较杂乱代码不太友好。   wsdl2java简化客户端        Axis2客户端安装目录/bin目录其内有两个batwsdl2java.bat和java2wsdl.bat可以实现WSDL文件和Java之间的互相转换。        考虑到我们以后可能经常使用这些命令设置环境变量方便以后调用。在系统变量中加入AXIS2_HOMEAxis2客户端安装目录path中追加;%AXIS2_HOME%\bin。        启动命令提示符进入WebServiceTestClient所在目录运行   [plain] view plaincopy print? wsdl2java -uri http://localhost:8080/axis2/services/CalculateService?wsdl -p webservice.client.test -s          参数说明uri - wsdl文件路径网络路径或本地路径p - 打包这里和上一个客户端实现类打在了一个包里wsdl2java有很多参数详细可以运行该命令去查看。          执行后如果没有报错说明运行成功刷新项目该包下多出了一个CalculateServiceStub类里面的代码极其复杂还乱呼呼的这我们不用管调用该类。   [java] view plaincopy print? package webservice.client.test;    import java.rmi.RemoteException;    import webservice.client.test.CalculateServiceStub.Plus;    public class Client2 {        /**      * param args      * throws RemoteException       */      public static void main(String[] args) throws RemoteException {          CalculateServiceStub stub  new CalculateServiceStub();          Plus plus  new Plus();          plus.setX(1);          plus.setY(2);          float result  stub.plus(plus).get_return();// 返回值自动转型这也是强大之处          System.out.println(result);      }    }            如此做的好处就是调用时不需要在去查看WSDL和正常使用一个类一样对WebService的封装都由wsdl2java自动生成代码更优雅、简洁。 利用wsdl2java轻松使用第三方WebService服务        有了wsdl2java已知一个WSDL文件我们就可以轻松的生成WebService客户端供我们调用给我们服务。文章开头给出的链接包含了一些第三方服务有一个服务是生成随机个数中文WSDLhttp://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl同样启动命令提示符进入项目路径执行   [plain] view plaincopy print? wsdl2java -uri http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl -p webservice.client.test -s          调用该类     [java] view plaincopy print? package webservice.client.test;    import java.rmi.RemoteException;    import webservice.client.test.RandomFontsWebServiceStub.ArrayOfString;  import webservice.client.test.RandomFontsWebServiceStub.GetChineseFonts;    public class ThirdClient {        /**      * param args      * throws RemoteException       */      public static void main(String[] args) throws RemoteException {          RandomFontsWebServiceStub stub  new RandomFontsWebServiceStub();          GetChineseFonts getChineseFonts  new GetChineseFonts();          getChineseFonts.setByFontsLength(10);// 免费使用有限制最多8个          ArrayOfString result  stub.getChineseFonts(getChineseFonts).getGetChineseFontsResult();          for(String str : result.getString()) {              System.out.println(str);          }      }    }  转载于:https://www.cnblogs.com/wlming/p/5466288.html
http://www.pierceye.com/news/292966/

相关文章:

  • 太原有哪些做网站的公司如何伪原创 网站
  • 设计好的网站网站策划方案详解
  • 建网站潞城哪家强?企业网络推广技巧
  • 怎么建设网站让国外看wordpress 公司内网
  • 虚拟主机购买网站网站值不值得做seo
  • 长沙网站排名优化如何在网站做电子杂志
  • 石家庄科技网站在线解压zip网站
  • 不良网站举报中心官网做网站必须买云虚拟主机吗
  • 网站建设实习wordpress 登陆 插件下载
  • 做耳鼻喉医院网站多少钱北京网站建设营销
  • 济南网站建设就选搜点网络ok外贸平台补贴政策
  • 网站建设 学校百度快照优化培训班
  • 做阀门的英文网站怎么写西安seo服务公司排名
  • 淘宝客网站如何做推广古董手表网站
  • 网站虚拟主机查询企业文化建设的内容有哪些
  • 财经大学网站建设apicloud wordpress
  • 平面设计网站排行榜刚进外贸公司一个月多少钱
  • 企业网站最下面的那栏叫啥广州编程培训机构哪里好
  • 怎么学建设网站网站建设敬请期待图片素材
  • 滴滴出行的网站是哪家公司做的新媒体营销课程心得体会
  • 中国室内设计师联盟网站浙江手机版建站系统开发
  • 网站开源代码模版广州公司注册核名查询系统官网
  • 海外网站seo丹阳市住房建设管理局网站
  • 定制公司网站沙市做网站weisword
  • 平湖模板网站建设公司网站建设项目报告书
  • 校园门户网站解决方案手机与电脑网站制作
  • 济南网站建设 伍际网络网站域名备案授权书
  • 网站开发销售提成网站建设的内部风险分析
  • 网站建设框架都有哪些内容公司名字大全参考2022
  • 成功备案的网站增加域名黄金网站