规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用

阅读更多
WebService 搭建及调用


         webservice的应用已经越来越广泛了,CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。举一个CXF开发webservice的例子吧。

一、环境搭建

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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第1张图片


         解压后,得到以下目录,如图所示:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第2张图片


         将上图中解压的..\apache-cxf-2.7.6\lib目录中的所有文件复制到新建工程lib目录下特别是endorsed文件夹也要原样复制。

二、WebService的服务搭建

1.创建工程

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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第3张图片


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

规则引擎Visual Rules Solution开发基础教程【连载11】--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
public List 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+=" for (int i = 0; i < int1.length; i++) {
str += int1[i] + ",";
}
str+="}>\n for (int i = 0; i < char1.length; i++) {
str +=  char1[i] + ",";
}
str+="}>\n for (int i = 0; i < byte1.length; i++) {
str +=  byte1[i] + ",";
}
str+="}";
return str;
}
/**
* 集合 list
*/
public List testList(List list) {
return list;
}
/**
* 集合 list
*/
public List testListString(String[] str1) {
List list = new ArrayList();
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配置文件


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">







5.修改配置文件web.xml

找到工程中web.xml文件,打开,将以下内容替换web.xml中内容,并保存

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">
       org.springframework.web.context.ContextLoaderListener 
   
 
     
       contextConfigLocation 
        classpath:applicationContext.xml 
 
 

CXFServlet

org.apache.cxf.transport.servlet.CXFServlet

1


CXFServlet
/webServices/*

 
    index.jsp
 

 
    index.jsp
 


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


6.新建测试项

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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第5张图片


         将其命名为test,如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第6张图片


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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第7张图片


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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第8张图片


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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第9张图片


         点击下一步,如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第10张图片


         选择方法,如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第11张图片


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

7.添加测试类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------\n"+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("----数组------\n"+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 list=test.testListString(strs);
System.out.println("----list------\n");
for (int i = 0; i < list.size(); i++) { System.out.println("----list------\n"+list.get(i));
}
}
public void testTestMap() {
TypeService test=new TypeServiceImpl();
Map map=test.testMap(1, "李丽", 12, '男', "六年级", "无");
System.out.println("----map------\n"+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------\n"+date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}


8.测试结果

         得到测试结果如下图打印输出所示:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第12张图片


9.工程发布

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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第13张图片


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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第14张图片


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

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第15张图片


         访问路径:http://localhost/webService_cxf/webServices/typeService?wsdl
a)怎样知道访问路径
         localhost— ip地址
         在此tomcat端口号为80,可省略,其他端口号是不能省略的,如h
ttp://localhost:8080
         webService_cxf—工程名
         webServices是由web.xml配置文件决定,如下图:


规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第16张图片


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




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

b)访问
         http://localhost/webService_cxf/webServices/typeService?wsdl


规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第17张图片


         完成。

三、VRS调用WebService服务


         使用VisualRulesSolution规则配置器作为客户端调用WebService服务。

1.新建规则包Client

         点击工程“test1”—“新建规则包”,并命名为Client,如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第18张图片


         点击规则包“Client”下的“对象库”—“添加web服务向导”,如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第19张图片


         弹出窗体,在wsdl地址对应的文本框中输入http://localhost/webService_cxf/webServices/typeService?wsdl,点击查找,勾选方法,                                    如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第20张图片


         显示如下:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第21张图片


2.调用日期型接口

         新建规则包“date”,添加web服务,选择如下服务,勾选参数,如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第22张图片


         勾选方法

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第23张图片


         对象库中参数定义,如下图:

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第24张图片


         规则配置如下,其中

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第25张图片


规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第26张图片


         测试结果

规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第27张图片


         其他接口的调用方法也都类似,调用的时候一定要注意参数类型。
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第28张图片
  • 大小: 126.1 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第29张图片
  • 大小: 21.5 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第30张图片
  • 大小: 175.3 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第31张图片
  • 大小: 223.9 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第32张图片
  • 大小: 204.7 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第33张图片
  • 大小: 211.7 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第34张图片
  • 大小: 209.4 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第35张图片
  • 大小: 228.9 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第36张图片
  • 大小: 263 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第37张图片
  • 大小: 83.2 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第38张图片
  • 大小: 84.3 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第39张图片
  • 大小: 27.9 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第40张图片
  • 大小: 209 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第41张图片
  • 大小: 78.4 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第42张图片
  • 大小: 31.6 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第43张图片
  • 大小: 9 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第44张图片
  • 大小: 12.7 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第45张图片
  • 大小: 204 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第46张图片
  • 大小: 107.5 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第47张图片
  • 大小: 101.5 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第48张图片
  • 大小: 64.6 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第49张图片
  • 大小: 90.4 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第50张图片
  • 大小: 145.5 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第51张图片
  • 大小: 117.2 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第52张图片
  • 大小: 17.3 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第53张图片
  • 大小: 28.6 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第54张图片
  • 大小: 144.3 KB
  • 规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用_第55张图片
  • 大小: 119.2 KB
  • 查看图片附件

你可能感兴趣的:(java,web,规则引擎,VRS,WebService)