zoukankan      html  css  js  c++  java
  • webService 服务端搭建

      首先,下载CXF,官网(http://cxf.apache.org/),具体位置如下图:

      

      解压后,得到以下目录

     

    下面,我们开始建立工程,在新建的工程lib目录下复制上述lib中的所有文件,特别是endorsed文件夹也要原样复制。

    1        WebService的服务器端

    1)      创建工程

      在eclipse/myEclipse中建立web工程webService_cxf,创建方式点击菜单项“File”—“New”—“Web Service Project”,如下图:

     

      弹出窗体,工程名名为webService_cxf,如下图:

     

    2)         新建接口TypeService.java

    package com.flageader.service;

    import java.util.Date;

    import java.util.List;

    import java.util.Map;

    import javax.jws.WebService;

    //必须有@WebService

    @WebService

    public interface TypeService {

        //基本类型

        public int testInt(short short1, short short2);

        //数组

         public String testArray(int[] int1,char[] char1, byte[] byte1) ;

         //集合 list

        public List testList(List list) ;

        //集合 list<String>

        public List<String> testListString(String[] str1) ;

        //集合 map

        public Map testMap(int id, String name, int age, char sex, String grade,String remark) ;

        //日期

        public Date testDate(Date date) ;

    }

    3)   新建实现类TypeServiceImpl.java

    package com.flageader.service;

    import java.util.ArrayList;

    import java.util.Date;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    public class TypeServiceImpl implements TypeService {

        /**

         * 常见类型 int

         */

        public int testInt(short short1, short short2) {

           int int1 = short1 + short2;

           return int1;

        }

        /**

         * 数组

         */

        public String testArray(int[] int1, char[] char1, byte[] byte1) {

           String str = "";

           str+="<int[]={";

           for (int i = 0; i < int1.length; i++) {

               str += int1[i] + ",";

           }

           str+="}> <char[]={";

           for (int i = 0; i < char1.length; i++) {

               str +=  char1[i] + ",";

           }

           str+="}> <byte[]={";

           for (int i = 0; i < byte1.length; i++) {

               str +=  byte1[i] + ",";

           }

           str+="}";

           return str;

        }

        /**

         * 集合 list

         */

        public List testList(List list) {

           return list;

        }

        /**

         * 集合 list<String>

         */

        public List<String> testListString(String[] str1) {

           List<String> list = new ArrayList<String>();

           for (int i = 0; i < str1.length; i++) {

               list.add(str1[i]);

           }

           return list;

        }

        /**

         * 集合 map

         */

        public Map testMap(int id, String name, int age, char sex, String grade,

               String remark) {

           Map map = new HashMap();

           map.put("id", id);

           map.put("name", name);

           map.put("age", age);

           map.put("sex", sex);

           map.put("grade", grade);

           map.put("remark", remark);

           return map;

        }

        /**

         * 时间

         */

        public Date testDate(Date date) {

           return date;

        }

    }

    4)   新建applicationContext.xml

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

    <beans xmlns="http://www.springframework.org/schema/beans"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"

     xmlns:jaxrs="http://cxf.apache.org/jaxrs"

     xmlns:util="http://www.springframework.org/schema/util"

     xsi:schemaLocation="

     http://www.springframework.org/schema/beans

     http://www.springframework.org/schema/beans/spring-beans.xsd

     http://cxf.apache.org/jaxws

     http://cxf.apache.org/schemas/jaxws.xsd

     http://cxf.apache.org/jaxrs

     http://cxf.apache.org/schemas/jaxrs.xsd

     http://www.springframework.org/schema/util

     http://www.springframework.org/schema/util/spring-util-2.0.xsd"

     default-lazy-init="false">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <!-- implementor:为实现类的完整路径名 -->

        <jaxws:endpoint id="typeService" implementor="com.flageader.service.TypeServiceImpl" address="/typeService" />

    </beans>

    5)   配置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">

        <listener>       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

        </listener> 

        <context-param> 

           <param-name>contextConfigLocation</param-name> 

            <param-value>classpath:applicationContext.xml</param-value> 

      </context-param> 

        <servlet>

           <servlet-name>CXFServlet</servlet-name>

           <servlet-class>

               org.apache.cxf.transport.servlet.CXFServlet

           </servlet-class>

           <load-on-startup>1</load-on-startup>

        </servlet>

        <servlet-mapping>

           <servlet-name>CXFServlet</servlet-name>

           <url-pattern>/webServices/*</url-pattern>

        </servlet-mapping>

      <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

      </welcome-file-list>

      <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

      </welcome-file-list>

    </web-app>

    这样webService编程完成了,为了能知道创建的方法是否存在着问题,我们需要进行测试。

    1.1     测试

      点击工程“webService_cxf”—“New”—“Source Folder”,如下图:

     

      将其命名为test,如下图:

     

      在点击实现类“TypeServiceImpl”—“New”—“Other...”,如下图:

     

      弹出窗体,在窗体中的文本框中输入“test”,在点击“Junit Test Case”,如下图:

     

      弹出窗体“Junit Test Case”,点击“Browse...”,弹出窗体“Source Folder Selection”,选择“webService_cxf”—“Test”,如下图:

      点击下一步,如下图:

      选择方法,如下图:

     

    这样创建了测试类TypeServiceImplTest.java。

    1)         测试类TypeServiceImplTest.java

    package com.flageader.service;

    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.ArrayList;

    import java.util.Date;

    import java.util.List;

    import java.util.Map;

    import junit.framework.TestCase;

    public class TypeServiceImplTest extends TestCase {

        public void testTestInt() {

           TypeService test=new TypeServiceImpl();

           short short1=12;

           short short2=24;

           System.out.println("----int------ "+test.testInt(short1, short2));

        }

        public void testTestArray() {

           TypeService test=new TypeServiceImpl();

           int[] int1={1,3,5,7};

           char[] char1={'男','女','是','否'};

           byte[] byte1={0,1};

            System.out.println("----数组------ "+test.testArray(int1,char1, byte1));

        }

        public void testTestList() {

           TypeService test=new TypeServiceImpl();

           List list=new ArrayList();

           list.add("ddd");

           list.add(3.4);

           List list1=test.testList(list);

           System.out.println("----list------");

           for (int i = 0; i < list.size(); i++) {

               System.out.println(list.get(i));

           }

        }

        public void testTestListString() {

           TypeService test=new TypeServiceImpl();

           String[] strs={"张三","李四","王五","赵六"};

           List<String> list=test.testListString(strs);

           System.out.println("----list<String>------ ");

           for (int i = 0; i < list.size(); i++) {           System.out.println("----list<String>------ "+list.get(i));

           }

        }

        public void testTestMap() {

           TypeService test=new TypeServiceImpl();

           Map map=test.testMap(1, "李丽", 12, '男', "六年级", "无");

           System.out.println("----map------ "+map);

        }

        public void testTestDate() {

           try {

               TypeService test=new TypeServiceImpl();

               SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");

               Date date =test.testDate(sim.parse("2004-09-02"));

               System.out.println("----date------ "+date);

           } catch (ParseException e) {

               e.printStackTrace();

           }

        }

    }

    2)         测试结果

    1.2     发布工程

      myEclispe/Eclispe已经配置好Tomcat(如果没有请配置好),点击“Tomcat 6.x”—“Add Deployment...”,如下图:

      弹出窗体,选择工程“webService_cxf”,如下图:

     这样就发布了“webService_cxf”工程。

    1)         启动tomcat

     

    2)         访问

    访问路径:http://localhost/webService_cxf/webServices/typeService?wsdl

    a)         怎样知道访问路径

    •   localhost— ip地址
    •  在此tomcat端口号为80,可省略,其他端口号是不能省略的,如http://localhost:8080
    •  webService_cxf—工程名
    •  webServices是由web.xml配置文件决定,如下图:

     

    • Typeservice是由applicationContext.xml配置文件决定,如下图:

     

    • wsdl—web接口定义语言,在最后需要问号传参,即:?wsdl

    b)         访问

    http://localhost/webService_cxf/webServices/typeService?wsdl

    完成。

  • 相关阅读:
    [转]SIFT特征提取分析
    OSGEARTH三维地形开源项目
    使用C#改变鼠标的指针形状
    检测到 LoaderLock:DLL"XXXX"正试图在OS加载程序锁内执行
    未能加载文件或程序集“XXXXX”或它的某一个依赖项。试图加载格式不正确的程序。
    未能进入中断模式,原因如下:源文件“XXXXXX”不属于正在调试的项目。
    C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出
    OpenGL2.0及以上版本中glm,glut,glew,glfw,mesa等部件的关系
    OpenGL 4.3配置教程
    ubuntu maven环境安装配置
  • 原文地址:https://www.cnblogs.com/ying-07/p/webService.html
Copyright © 2011-2022 走看看