用jetty发布webservice

本文档详细介绍了如何使用Jetty作为服务器,Axis作为工具来发布一个Webservice。首先下载并解压Jetty和Axis,然后创建接口IisLiveManager并生成jar包,接着通过Java2WSDL生成wsdl文件,使用WSDL2Java生成服务器端和客户端代码。在服务器端实现接口,将编译后的class文件拷贝到Jetty的相应目录,并部署服务。最后,客户端调用Webservice进行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下载jetty:http://ftp.neu.edu.cn/mirrors/eclipse/jetty/index.html,版本jetty-distribution-8.0.0.v20110901.zip,解压到当前文件夹

(补充:启动Jetty可输入如下命令: java -jar start.jar)

2.下载axis:http://www.apache.org/dist//ws/axis/1_4/ ,版本axis-bin-1_4.tar.gz,解压到当前文件夹,并将axis-1_4\webapps中的内容拷贝到jetty根目录的jetty_home\webapps中

(补充:开启jetty后,可通过访问http://localhost:8080/axis/测试axis是否安装好)

3.创建工程FaltTolerance,在包isLiveManager中创建接口IisLiveManager.java,内容为:

package isLiveManager;
public interface IisLiveManager {
   public boolean isLiveAsk();
   public boolean isLiveAnswer();
   public boolean callBackTime(int time);
}

4.生成jar包

   右键单击IisLiveManager.java,导出为isLiveManager.jar

5.将isLiveManager.jar拷贝到jetty_home\webapps\axis\WEB-INF\lib中

6.由jar包生成wsdl文件,运行如下指令:

E:\jetty-8.0.0\webapps\axis\WEB-INF\lib>set linpath=axis.jar;axis-ant.jar;commons-discovery-0.2.jar;commons-logging-1.0.4.jar;jaxrpc.jar;log4j-1.2.8.jar;saaj.jar;wsdl4j-1.5.1.jar;mailapi_1_3_1.jar;activation.jar;isLiveManager.jar

E:\jetty-8.0.0\webapps\axis\WEB-INF\lib>java -cp %linpath% org.apache.axis.wsdl.Java2WSDL -o isLiveManager.wsdl -l  "http://localhost:8080/services/isLiveManager"isLiveManager.IisLiveManager

可以看到当前目录下生成了isLiveManager.wsdl。

(注意:此处url连接之后一定要用isLiveManager.IisLiveManager,必须和之前编写接口是的名称一致.比如标红部分错误写成isLiveManager,则会出现如下错误提示:Java.lang.ClassNotFoundException:isLiveManager  at····at····at····)

(补充:命令org.apache.axis.wsdl.Java2WSDL -o ···· -l ·····中,-o表示output WSDL filenames,-l表示service location url)

(补充:命令java -cp后面是类路径,用于指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包)

7.由wsdl生成java文件,运行指令如下:

E:\jetty-8.0.0\webapps\axis\WEB-INF\lib>set linpath=axis.jar;axis-ant.jar;commons-discovery-0.2.jar;commons-logging-1.0.4.jar;jaxrpc.jar;log4j-1.2.8.jar;saaj.jar;wsdl4j-1.5.1.jar;mailapi_1_3_1.jar;activation.jar

E:\jetty-8.0.0\webapps\axis\WEB-INF\lib>java -cp %linpath% org.apache.axis.wsdl.WSDL2Java -s -S true isLiveManager.wsdl

(补充:命令org.apache.axis.wsdl.WSDL2Java -s -S···中,-s 表示server-side, emit server-side bingdings for web service;-S skeletonDeploy<argument>

  deploy skeleton (true) or implementation (false) in deploy.wsdd.Default is false. Assumes --server-side.)

可以看到当前目录下生成了isLiveManager文件夹

文件夹isLiveManager中有自动生成的java文件,如下:

IisLiveManager.java

IisLiveManagerService.java

IisLiveManagerServiceLocator.java

IsLiveManagerSoapBindingImpl.java

IsLiveManagerSoapBindingSkeleton.java

IsLiveManagerSoapBindingStub.java

deploy.wsdd

undeploy.wsdd

文件的简单说明:

1.deploy即是我们部署webservices要用到的部署文件

2.IisLiveManagerSoapBindingImpl.java 即是我们要实现的服务器端的功能实现类,它是IisLivetManager.java的实现类

3.IisLiveService.java 即是客户端调用服务器端的服务的功能类

 

8.服务器代码的实现:

新建工程,将7中生成的6个java文件加入工程

注意要将如下所示jar包含到buildpath中:(注意单独在project中添加一个lib文件夹,并拷贝进去这些jar还不行,一定要在java build path中导入一次)

axis.jar;axis-ant.jar;commons-discovery-0.2.jar;commons-logging-1.0.4.jar;jaxrpc.jar;log4j-1.2.14.jar;saaj.jar;wsdl4j-1.5.1.jar;mailapi_1_3_1.jar;activation.jar

修改IsLiveManagerSoapBindingImpl.java的代码,如下:

package isLiveManager;

public class IsLiveManagerSoapBindingImpl implements isLiveManager.IisLiveManager{
    public boolean isLiveAsk() throws java.rmi.RemoteException {
     System.out.println("The  method isLiveAsk() is running well.");
        return false;
    }

    public boolean callBackTime(int in0) throws java.rmi.RemoteException {
     System.out.println("The  method callBackTime() is running well.The callBackTime is "+ in0+" ms.");
        return false;
    }

    public boolean isLiveAnswer() throws java.rmi.RemoteException {
     System.out.println("The  method isLiveAnswer() is running well.");
        return false;
    }

}

 

9.编译:

将E:\Eclipse\FaultTolerance\bin中的isLiveManager文件夹(要注意类包结构)拷贝到:jetty_home\webapps\axis\WEB-INF\classes下。

注意,每次对IsLiveManagerSoapBindingImpl.java进行了修改,还应该再拷贝一次class文件。因为启动jetty运行的是jetty_home\webapps\axis\WEB-INF\classes中的的calss文件。

10.服务器端发布服务:

将步骤7中生成的deploy.wsdd拷贝到jetty_home\webapps\axis\WEB-INF\lib目录下

启动jetty ,命令:

E:\jetty-8.0.0>java -jar start.jar

发布服务命令

E:\jetty-8.0.0\webapps\axis\WEB-INF\lib>set linpath=axis.jar;axis-ant.jar;commons-discovery-0.2.jar;commons-logging-1.0.4.jar;jaxrpc.jar;log4j-1.2.8.jar;saaj.jar;wsdl4j-1.5.1.jar;mailapi_1_3_1.jar;activation.jar

E:\jetty-8.0.0\webapps\axis\WEB-INF\lib>java -cp %linpath% org.apache.axis.client.AdminClient deploy.wsdd

可看到如下输出

Processing file deploy.wsdd
<Admin>Done processing</Admin>

表示发布成功. 

验证可查看:http://localhost:8080/axis


11.客户端调用服务器端发布的webservice:

客户端代码如下:

package test;

import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

import isLiveManager.IisLiveManager;
import isLiveManager.IisLiveManagerServiceLocator;

public class testFaultTolerance {
 public static void main(String[] args) {
 
  IisLiveManagerServiceLocator ilmLoc = new IisLiveManagerServiceLocator();
  try
  {
  IisLiveManager ilm = ilmLoc.getisLiveManager(new URL("
http://localhost:8080/axis/services/isLiveManager"));
  ilm.isLiveAnswer();
  ilm.callBackTime(5);
  ilm.isLiveAsk();

  }
  catch (MalformedURLException e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  catch (ServiceException e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  catch (RemoteException e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

调用webservice成功,可以再开启jetty的后台看到输出:


 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值