webService 服务端搭建

摘要:
xmlversion=“1.0”encoding=“UTF-8”?

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

  webService 服务端搭建第1张

  解压后,得到以下目录

 webService 服务端搭建第2张

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

1        WebService的服务器端

1)      创建工程

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

 webService 服务端搭建第3张

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

 webService 服务端搭建第4张

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”,如下图:

 webService 服务端搭建第5张

  将其命名为test,如下图:

 webService 服务端搭建第6张

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

 webService 服务端搭建第7张

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

 webService 服务端搭建第8张

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

webService 服务端搭建第9张

  点击下一步,如下图:

webService 服务端搭建第10张

  选择方法,如下图:

 webService 服务端搭建第11张

这样创建了测试类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)         测试结果
webService 服务端搭建第12张

1.2     发布工程

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

webService 服务端搭建第13张

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

webService 服务端搭建第14张

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

1)         启动tomcat

 webService 服务端搭建第15张

2)         访问

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

a)         怎样知道访问路径

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

 webService 服务端搭建第16张

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

 webService 服务端搭建第17张

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

b)         访问

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

webService 服务端搭建第18张

完成。

免责声明:文章转载自《webService 服务端搭建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇bootstrap-table 选择行,并且获得选中行的所有数据内容EasyExcel导出带下拉框,并解决导出之后打开总是显示发现不可读取内容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转】 如何利用C#代码来进行操作AD

要用代码访问 Active Directory域服务,需引用System.DirectoryServices命名空间,该命名空间包含两个组件类,DirectoryEntry和 DirectorySearcher。DirectoryEntry类可封装 ActiveDirectory域服务层次结构中的节点或对象,使用此类绑定到对象、读取属性和更新特性;使用Di...

typescript 学习

typescript将在不久的将来从前端大一统的趋势中脱颖而出成为主流编译器。学习ts对前端开发人员来说是不可或缺的。同时,也要抓紧学习es2015/6/7。ts和es6并不是对立的。而是相辅相成的。ts的竞争和打击对象实质上是babel…… 官方资料  # 官方地址: https://www.tslang.cn  # github: https://g...

设计模式-15 模板模式

一 模板模式   定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。也就是说:假如某些操作代码基本相同,只是其中一部分会经常改变,则可以使用模板方法,将不变的部分作为一个模板,将容易变动的部分让子类来实现。 关键代码:在抽象类实现,其他步骤在子类实现。 使用场景: Spirng 中对...

DateTimeField *** received a naive datetime (***) while time zone support is active

django报错: /usr/local/lib/python2.7/dist-packages/Django-1.8.2-py2.7.egg/django/db/models/fields/init.py:1474: RuntimeWarning: DateTimeField Org.updatedAt received a naive datetime...

java8函数式接口(Functional Interface)

介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为 lambda 表达式(箭头函数)。 函数式接口代表的一种契约, 一种对某个特定函数类型的契约。Lambda表达式不能脱离上下文而存在,它必须要有一个明确的目标类型(interface),而这个目标类型就是...

matlab 中如何创建以及获取popupmenu的值

1.如何创建popupmenu的值 如图,点击河南左边的符号,会弹出右边的小窗口,输入完一项之后点击enter继续创建第二项即可。 2.如何获取popupmenu的值 functionpopupmenu_Callback(hObject, eventdata, handles) val = get(handles.popupmenu,'value...