热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java的webservice开发步骤

java的webservice开发步骤CXF的步骤:1.导入jar:1.commons-logging-1.1.1.jar2.geronimo-acti

java的webservice开发步骤                                            

CXF的步骤:
1.导入jar:
  

1. commons-logging-1.1.1.jar 2. geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar) 3. geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250) 4. geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar) 5. geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar) 6. geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181) 7. geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar) 8. geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar) 9. jaxb-api-2.1.jar 10. jaxb-impl-2.1.12.jar 11. jetty-6.1.21.jar 12. jetty-util-6.1.21.jar 13. neethi-2.0.4.jar 14. saaj-api-1.3.jar 15. saaj-impl-1.3.2.jar 16. wsdl4j-1.6.2.jar 17. wstx-asl-3.2.8.jar 18. XmlSchema-1.4.5.jar 19. xml-resolver-1.2.jar 20. cxf-2.2.2.jar jetty-http-7.5.4.v20111024.jar jetty-server-7.5.4.v20111024.jar jetty-io-7.5.4.v20111024.jar jetty-continuation-7.5.4.v20111024.jar

View Code

 

  2. 编写webservice接口service,
   注意注解,类上面的注解和方法上面的注解,参数的注解(参数注解的目的是提高参数的可读性)

  @WebService public interface INumberDao { @WebMethod public String Add(@WebParam(name="num1") int num1,@WebParam(name="num2") int num2);}

View Code

 

3. 编写webservice接口的实现serviceimpl,
   注意类上面的注解和方法的注解,参数的注解      

@WebService
@SOAPBinding(style
=Style.RPC)
public class NumberDaoImpl implements INumberDao{@WebMethod public String Add(@WebParam(name="num1") int num1, @WebParam(name="num2") int num2) { double sum = num1+num2; return "\n两数之和\n"+sum+"\n"; }

View Code

 

4. 创建服务端  Server代码            

   大体步骤:①创建webservice服务工厂(JaxWsServerFactoryBean),                                  

                       注册webservice接口(setServiceClass),                              

                       发布接口(setAddress(),setServiceBean()),                                  

                       创建webservice(create())         

     具体代码如下       

public class Server { private Server() { INumberDao helloWorld = new NumberDaoImpl(); // 创建WebService服务工厂 JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); // 注册WebService接口 factory.setServiceClass(INumberDao.class); // 发布接口 factory.setAddress("http://192.168.0.112:9000/number"); //访问的网址自己定义 factory.setServiceBean(helloWorld); // 创建WebService
factory.create(); };

View Code

public static void main(String[] args) throws InterruptedException { // 启动服务端 new Server(); System.out.println("Server ready....."); // 休眠一分钟,便于测试 Thread.sleep(1000 * 60); System.exit(0); } }

View Code

 

 
5. 运行Server类,然后去访问那网址后面加上?wsdl;如果访问出现了wsdl的内容,那说明上述你的操作无误,可以编写客户端了,
eg:http://192.168.0.112:9000/number?wsdl
6. 编写客户端代码     大体步骤:创建webservice服务工厂,加入接收和返回响应的拦截器,设定你要访问的接口的地址(XXX。class)和访问的地址,
创建一个服务器,访问你需要的方法,打印结果    
具体代码:   

public class ClientTest { public static void main(String[] args) { //创建webservice服务工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); //加入一个接收响应日志的拦截器 factory.getInInterceptors().add(new LoggingInInterceptor()); //加入一个返回响应日志的拦截器 factory.getOutInterceptors().add(new LoggingOutInterceptor()); factory.setServiceClass(INumberDao.class); factory.setAddress("http://192.168.0.112:9000/number"); //根据设置创建一个服务器 INumberDao client = (INumberDao) factory.create(); String reply = client.Add(50, 30); System.out.println(reply); }
}

View Code
7.运行客户端测试代码,打印出对应的结果则OK

二、开发service(服务端) 学习网址:http://blog.sina.com.cn/s/blog_4aa9c9d101015k5f.html(手动)
使用xfire,我这里使用的是myeclipse集成的xfire进行测试的     利用xfire开发WebService,可以有三种方法:    
1一种是从javabean 中生成;      
2 一种是从wsdl文件中生成;      
3 还有一种是自己建立webservice     
方法3的步骤     
自己手动建立Xfire的webservice
1.引入jar(18个+spring)
2.编写service接口
3.实现service接口
4.编写web.xml文件  


<servlet> <servlet-name>XFireServletservlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet servlet-class> servlet> <servlet-mapping> <servlet-name>XFireServletservlet-name> <url-pattern>/servlet/XFireServlet/*url-pattern> servlet-mapping>
<servlet-mapping> <servlet-name>XFireServletservlet-name> <url-pattern>/services/*url-pattern>
servlet-mapping>

View Code

5.在WEB-INF下面创建一个xfire文件,建一个service.xml,并且把META-INF移到WEB-INF里面  

xml version&#61;"1.0" encoding&#61;"UTF-8"?> <beans> <service xmlns&#61;"http://xfire.codehaus.org/config/1.0"> <name>Numbersname> <serviceClass>service.INumberDaoserviceClass> <implementationClass>serviceimpl.NumberDaoImplimplementationClass> <style>wrappedstyle> <use>literaluse> <scope>applicationscope> service> beans>

View Code

6.部署tomcat

7.访问:http://localhost:6070/webservice_Xfire/services    能访问则说明服务端已经ok了    

8.创建剪客户端   

   ①写客户端的接口(测试调用的时候可用)   

   ②测试方法    测试成功了就可以进行调用接口,这样不容易出错    

9.java调用接口    

public static void main(String[] args) { Service service &#61; new ObjectServiceFactory().create(ClientDao.class); XFire xfire &#61; XFireFactory.newInstance().getXFire(); XFireProxyFactory factory &#61; new XFireProxyFactory(xfire); String serviceUrl &#61; "http://localhost:6070/webservice_Xfire/services/Numbers"; ClientDao client &#61; null; try { client &#61; (ClientDao)factory.create(service,serviceUrl); } catch (Exception e) { System.out.println(e); e.printStackTrace(); } int num1&#61;500; int num2 &#61;500; System.out.println(client.Add(num1, num2)); System.out.println("----------------------"); System.out.println(client.Diff(num1, num2)); System.out.println("----------------------"); System.out.println(client.Quotient(num1, num2)); System.out.println("----------------------"); System.out.println(client.Accumulate(num1, num2));
}

View Code
注意:项目目录

(项目名)XXX --src (包名)dao daoimpl client callinteface entity -- 架包 --WebRoot --WEB-INF -lib -META-INF xfire services.xml MANIFEST.MF -web.xml --index.jsp

 


axis2安装 参考:http://wenku.baidu.com/view/afd0402fccbff121dd368387.html
详细讲解:      
其中axis2-1.6.0-bin.zip文件中包含了Axis2中所有的jar文件,   axis2-1.6.0-war.zip文件用于将WebService发布到Web容器中。
安装AXIS2的具体步骤:      
第一步&#xff1a;下载axis2-1.6的插件压缩包&#xff0c;axis2-eclipse-codegen-plugin-1.6.2.zip 和 axis2-eclipse-service-plugin-1.6.2.zip&#xff08;现在最新版本是1.6.2&#xff09;&#xff1b;      
第二步&#xff1a;解压下载的两个压缩包&#xff0c;并且将解压后的文件夹放到myeclipse8.6的dropins目录下&#xff1b;      
第三步&#xff1a;在dropins目录下添加axis2.link文件&#xff0c;                    
内容是path&#61;myeclipse的安装目录\\dropins&#xff08;例如&#xff1a;我的文件内容为&#xff1a;path&#61;E:\\Genuitec\\MyEclipse-8.6\\dropins&#xff09;&#xff1b;      
第四步&#xff1a;重启myeclipse&#xff0c;在新建工程时&#xff0c;选择new-->other&#xff0c;然后在弹出窗口中输入axis2&#xff0c;如果出现axis向导&#xff0c;则代表安装成功.   
注意:axis2 code generator 看字面意思就知道是 将webservice文件wsdl文件生成代码的一个向导     
axis2 service archiver 这个是将java类 生成为webservice的向导。            
注意:记住一定把生成好的my_service.arr(或者是XXX.arr)文件复制到apache-tomcat-7.0.54\webapps\axis2\WEB-INF\services下面去,不然找不到你的服务器
axis2的开发步骤:      
先将你的axis安装好      
检测你的axis是否安装好的方法:        
启动Tomcat服务器&#xff0c;在浏览器中访问http://localhost:8080/axis/&#xff0c;如果页面显示有错误&#xff0c;则需要回头检查一下相关配置是否正确&#xff0c;如果浏览页面能正确显示出系统组件、属性等参数配置信息&#xff0c;则表示安装成功
1.新建一个web项目  
2.编写java接口  
3.实现接口的方法     (发布webService)  
4.项目右键--->new --> other -->在搜索框中输入axis,选择Axis2 Service Archiver -->    填写项目在运行时生成的类的地址
(如&#xff1a;R:\apache-tomcat-7.0.54\webapps\axis_webservice\WEB-INF\classes)-->    勾上Include .class files only --> 勾选Skip WSDL --> 如果是要连接数据库的那应该加上jar --> 下一步 -->     勾上Generate the service xml automaticaly --> 下一步 -->      填写Service name&#xff08;服务名称&#xff0c;自己定义,如:axis2Service&#xff09;-->填写Class name(类的完全限定名)(例如:serviceImpl.CalculateServiceImpl)-->下一步 -->      输入service 文件的保存路径(如&#xff1a;F:\项目\练习总结\axis_webservice\WebRoot\WEB-INF\services)和文件名&#xff08;文件是以.aar结尾的&#xff09;(本例子以:my_service.aar)-->完成  
5.把刚刚在第4步创建的my_service.aar复制到R:\apache-tomcat-7.0.54\webapps\axis2\WEB-INF\services里面
(此刻里面有3个文件(services.list和my_service.aar和version-1.6.0.aar))  
6.访问:http://localhost:6070/axis2/services/listServices,    如果网页里面显示有该项目的方法名那就表示可以通过了         
注意:访问的时候&#xff0c;网址的地址一致&#xff1a;只有端口号不同  
7.去访问方法:http://localhost:6070/axis2/services/axis2Service/addNum?num1&#61;10&num2&#61;5  访问正常是以wsdl的形式输出方法的结果       
注意&#xff1a;访问的地址&#xff1a;http://loacalhost:端口号/axis2/services/服务名称/方法名称&#xff1f;参数

转:https://www.cnblogs.com/liqun-12345/p/4672593.html



推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
author-avatar
良辰rose
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有