• WebService实例一


    一.首先创建用eclipse创建一个web工程,我命名为store.

    二.导入我下载好的xfire文件夹下的lib文件夹的所有包还有一个xfire-all-1.2.6.jar包

     xfire的下载地址:http://xfire.codehaus.org/Download

    三.环境搭好了.开始写代码了。

    在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">
    <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>
    </web-app>

      其中主要就是引入了XFireServlet,用以处理Web Service请求,并且负责提供Web Service的WSDL,如果你发布了一个名为BookService的WebService,则可以通过网址:
    http://<服务器>[:端口]/<webapp名>/services/BookService
    来访问这个WebService,并且通过地址:
    http://<服务器>[:端口]/<webapp名>/services/BookService?WSDL  来得到这个WebService的WSDL信息。

    四.写我们需要提供的service接口类和实现类。

    先写一个接口,这个接口是告诉服务器你的WebService哪些方法可以被用户调用的。

    public interface SayHiService {
          public String sayHi(String name);
    }
    

    然后写该接口的实现类

    /**   
    * @Title: SayHiServiceImpl.java
    * @Package com.chaowen.study
    * @Description: TODO(用一句话描述该文件做什么)
    *
    @author chaowen
    * @date 2011-9-8 下午11:41:04
    *
    @version V1.0
    */
    package com.chaowen.study;

    /**
    * @ClassName: SayHiServiceImpl
    * @Description: 接口实现类
    *
    @author chaowen
    * @date 2011-9-8 下午11:41:04
    *
    */
    public class SayHiServiceImpl implements SayHiService {

    /**
    * 该方法是可以通过WebService调用访问到的
    */
    @Override
    public String sayHi(String name) {
    if(name == null){
    return "连名字也不肯告诉我吗";
    }
    return name+", 你吃了吗?没吃回家吃去吧。";
    }

    /**
    * 该方法因为没有在接口SayHiService中定义,所以不能被WebService调用到
    */
    public String 不告诉你(){
    return "我的名字不告诉你!";
    }

    }

     五.把工程发布为WebService

      直接在eclipse里 部署工程运行。 

      

    或者直接在tomcat安装目录底下找到conf文件夹,打开server.xml,在</host>标签之前加上这句话

    docBase是工程所在的路径,根据你的工程而修改吧。

    然后启动tomcat,打开浏览器,输入:http://localhost:8080/store/services

    会看到

    说明你成功了。

    六.最后一步了。写客户端.

    /**   
    * @Title: SayHiClient.java
    * @Package com.chaowen.study
    * @Description: TODO(用一句话描述该文件做什么)
    *
    @author chaowen
    * @date 2011-9-9 上午12:20:25
    *
    @version V1.0
    */
    package com.chaowen.study;

    import java.net.MalformedURLException;

    import org.codehaus.xfire.client.Client;
    import org.codehaus.xfire.client.XFireProxyFactory;
    import org.codehaus.xfire.service.Service;
    import org.codehaus.xfire.service.binding.ObjectServiceFactory;
    import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;



    /**
    * @ClassName: SayHiClient
    * @Description: 客户端调用webService
    *
    @author chaowen
    * @date 2011-9-9 上午12:20:25
    *
    */
    public class SayHiClient {


    public static void main(String[] args) {
    String serviceURL
    = "http://localhost:8080/store/services/SayHiService";
    //两种方法创建service
    // Service serviceModel = new ObjectServiceFactory().create(SayHiService.class,null,"http://cn.com.pansky/SayHiService",null);
    Service serviceModel = new ObjectServiceFactory().create(SayHiService.class);

    XFireProxyFactory serviceFactory
    = new XFireProxyFactory();

    try{
    SayHiService service
    = (SayHiService) serviceFactory.create(serviceModel, serviceURL);
    Client client
    = Client.getInstance(service);
    //client.addOutHandler(new OutHeaderHandler());

    // disable timeout
    // client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "1");

    String hello
    = service.sayHi("张山疯");
    System.out.println(
    "服务器对[张山疯] 的回答是:" + hello );

    hello
    = service.sayHi(null);
    System.out.println(
    "服务器胡言乱语说:" + hello );

    }
    catch (MalformedURLException e) {
    e.printStackTrace();

    }
    }
    }

      运行结果是

  • 相关阅读:
    mysql 忘记密码
    IE Webcontrols Treeview的一个bug及修正
    [原创]关于打开新窗口和关闭老窗口的2个方法!
    如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值
    怎样才能用一个adsl帐号使两台机子同时上网?
    如何查找 文件的MIME类型
    [原创]利用DropDownlist来控制Textbox输入数字的精度
    动态添加Html单元格时,事件怎么写?如mouseover事件
    [原创]通过点击节点或选择节点前checkbox实现树节点单选功能!
    [原创]如何控制TreeView在打开的时候只展开两层?
  • 原文地址:https://www.cnblogs.com/andgoo/p/2172007.html
Copyright © 2020-2023  润新知