java的webservice开发步骤

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 "<message>\n<name>两数之和</name>\n<value>"+sum+"</value>\n</message>"; 
 } 
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的内容,那说明上述你的操作无误,可以编写客户端了,
 
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文件  
<!-- STSRT XIFRE的配置 -->     
<servlet>         
    <servlet-name>XFireServlet</servlet-name>        
     <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet          </servlet-class>     
    </servlet>    
 <servlet-mapping>        
     <servlet-name>XFireServlet</servlet-name>        
     <url-pattern>/servlet/XFireServlet/*</url-pattern>     
 </servlet-mapping>     
<servlet-mapping>         
     <servlet-name>XFireServlet</servlet-name>       
     <url-pattern>/services/*</url-pattern>     
</servlet-mapping>   
<!-- END XIFRE的配置 -->   
View Code

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

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

 <beans>    

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

     <!-- 为该service起一个名字 -->   

     <name>Numbers</name>  

      <!-- service的接口类 -->   

     <serviceClass>service.INumberDao</serviceClass>   

      <!-- service的接口实现类 -->   

            
      <implementationClass>serviceimpl.NumberDaoImpl</implementationClass>  

          <style>wrapped</style>         

          <use>literal</use>      

         <scope>application</scope>    

      </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 = new ObjectServiceFactory().create(ClientDao.class); 
     XFire xfire = XFireFactory.newInstance().getXFire();  
     XFireProxyFactory factory = new XFireProxyFactory(xfire);   
    String serviceUrl = "http://localhost:6070/webservice_Xfire/services/Numbers";   
    ClientDao client = null;  
     try {   
          client = (ClientDao)factory.create(service,serviceUrl);   
    } catch (Exception e) {   
         System.out.println(e);    e.printStackTrace();   
    }   
           int num1=500;   
           int num2 =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-1.6.0-bin.zip文件中包含了Axis2中所有的jar文件,   axis2-1.6.0-war.zip文件用于将WebService发布到Web容器中。
安装AXIS2的具体步骤:      
   第一步:下载axis2-1.6的插件压缩包,axis2-eclipse-codegen-plugin-1.6.2.zip 和 axis2-eclipse-service-plugin-1.6.2.zip(现在最新版本是1.6.2);      
   第二步:解压下载的两个压缩包,并且将解压后的文件夹放到myeclipse8.6的dropins目录下;      
   第三步:在dropins目录下添加axis2.link文件,                    
      内容是path=myeclipse的安装目录\\dropins(例如:我的文件内容为:path=E:\\Genuitec\\MyEclipse-8.6\\dropins);      
   第四步:重启myeclipse,在新建工程时,选择new-->other,然后在弹出窗口中输入axis2,如果出现axis向导,则代表安装成功.   
     注意: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服务器,在浏览器中访问http://localhost:8080/axis/,如果页面显示有错误,则需要回头检查一下相关配置是否正确,如果浏览页面能正确显示出系统组件、属性等参数配置信息,则表示安装成功
1.新建一个web项目  
2.编写java接口  
3.实现接口的方法     (发布webService)  
4.项目右键--->new --> other -->在搜索框中输入axis,选择Axis2 Service Archiver -->    填写项目在运行时生成的类的地址
(如: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(服务名称,自己定义,如:axis2Service)-->填写Class name(类的完全限定名)(例如:serviceImpl.CalculateServiceImpl)-->下一步 -->      输入service 文件的保存路径(如:F:\项目\练习总结\axis_webservice\WebRoot\WEB-INF\services)和文件名(文件是以.aar结尾的)(本例子以: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,    如果网页里面显示有该项目的方法名那就表示可以通过了         
  注意:访问的时候,网址的地址一致:只有端口号不同  
7.去访问方法:http://localhost:6070/axis2/services/axis2Service/addNum?num1=10&num2=5  访问正常是以wsdl的形式输出方法的结果       
  注意:访问的地址:http://loacalhost:端口号/axis2/services/服务名称/方法名称?参数
posted @ 2015-07-24 10:07  七夏之  阅读(1465)  评论(0编辑  收藏  举报