`
Mr-zhang
  • 浏览: 18467 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

VRS规则引擎WebService搭建及调用<1>

阅读更多
环境搭建

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



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



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

WebService的服务搭建

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



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



新建接口文件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) ;
}


新建实现类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+="}>\n<char[]={";
for (int i = 0; i < char1.length; i++) {
str +=  char1[i] + ",";
}
str+="}>\n<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;
}
}


新建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>


修改配置文件web.xml
找到工程中web.xml文件,打开,将以下内容替换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编程完成了,为了能知道创建的方法是否存在着问题,我们需要进行测试。


新建测试项
点击工程“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。

添加测试类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<String> list=test.testListString(strs);
System.out.println("----list<String>------\n");
for (int i = 0; i < list.size(); i++) { System.out.println("----list<String>------\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();
}
}
}


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



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



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



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

启动tomcat





访问路径: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


完成。




  • 大小: 126.1 KB
  • 大小: 21.5 KB
  • 大小: 175.3 KB
  • 大小: 223.9 KB
  • 大小: 204.7 KB
  • 大小: 211.7 KB
  • 大小: 209.4 KB
  • 大小: 228.9 KB
  • 大小: 263 KB
  • 大小: 83.2 KB
  • 大小: 84.3 KB
  • 大小: 27.9 KB
  • 大小: 209 KB
  • 大小: 78.4 KB
  • 大小: 31.6 KB
  • 大小: 31.6 KB
  • 大小: 9 KB
  • 大小: 12.7 KB
  • 大小: 204 KB
分享到:
评论

相关推荐

    Visual-Rules规则引擎产品介绍-PPT课件.ppt

    1. 规则管理:Visual Rules提供了直观易用的业务规则配置器,使得业务部门可以直接管理业务规则,降低了业务规则变更的成本,并可追溯修改轨迹和执行轨迹。 2. 决策服务:通过标准化的行业规则库建设,实现行业数据...

    VRS edit 2.24版本

    "VRS1_Editor.exe"是VRS Edit的主要可执行文件,它承载了软件的界面和所有操作逻辑。通过这个应用程序,用户能够编写、测试和调试机器人的控制程序。"VRS1_Editor.cnt"可能包含软件的配置信息,用于定制工作环境以...

    DH-VRS16录音系统说明书

    DH-VRS16录音系统说明书 DH-VRS16录音系统是一款功能强大且灵活的电话录音解决方案,旨在提供高效、可靠的录音管理体验。该系统通过安装配套的录音系统软件在PC机上,用户可以轻松实现录音回放、录音查询、录音监控...

    VRS及其在矿山测量应用中关键技术分析

    标题:VRS及其在矿山测量应用中关键技术分析 VRS(虚拟参考站)技术是GPS(全球定位系统)网络RTK(实时动态定位)技术的一种,具有传统测量技术和传统RTK技术无可比拟的优点。随着技术的日益成熟,VRS在矿山测量中...

    VRS--GPS网络RTK技术

    #### 二、VRS系统组成及工作原理 **VRS技术**(Virtual Reference Station,虚拟参考站)是Trimble公司在2000年推出的先进技术,它通过集成GPS定位技术、计算机网络技术和无线通信技术,解决了RTK技术存在的局限性...

    基于VRS51L3074的LED显示屏控制系统

    ### 基于VRS51L3074的LED显示屏控制系统 #### 1. 引言 本文主要介绍了如何利用VRS51L3074这款高性能的8051单片机来设计一种LED显示屏控制系统。VRS51L3074作为市场上首款内置铁电存储器(FRAM)的8051单片机,不仅...

    关于天宝R8-RTK及VRS测量简明教程.docx

    1. 新建或打开任务:在主菜单中选择“文件”,输入任务名称,选择坐标系统,通常选择“无投影/无基准”,并进行点校正。 2. 配置设备:首先配置蓝牙设备,如电台或手机蓝牙,使其与手簿连接。在主界面选择“配置”→...

    基于VRS51L3074的多点定闹电子日历钟的设计

    摘要论述了多点定闹电子日历钟系统的设计,在VRS51L3074单片机的控制下,使用串行时钟芯片DSl2887,实现时间和闹钟的设置功能。通过键盘和液晶显示提示,可以方便地校对时钟和设置闹钟,利用键盘、LCD显示模块构成

    MTX 15VRS SPS-Interface

    MTX 15VRS SPS-Interface 是一款由 Bosch Rexroth AG 开发的工业自动化设备接口,主要用于连接和通信MTX系列的PLC(可编程逻辑控制器)与SPS(Simulation and Programming Station,模拟和编程站)。该接口设计用于...

    CORS与VRS参考站建设

    CORS与VRS参考站建设 PPT CORS与VRS参考站

    RTCM.zip_RTCM _mc55_vrs

    在本案例中,“RTCMB.zip_RTCM_mc55_vrs”是一个压缩包,其中包含了与RTCM相关的数据以及与MC55模块使用VRS(Virtual Reference Station)技术进行差分定位的程序。 MC55是Motorola公司生产的一款高性能的GSM/GPRS...

    GPS(VRS)技术在公路测量中的应用.pdf

    1. VRS技术原理 VRS技术的核心是利用网络中的多个基准站接收卫星信号,然后在数据中心进行数据处理。移动站先将自己的位置信息发送到中心,中心根据移动站的位置选择附近的几个优质基准站信息,创建一个虚拟参考站。...

    Rexroth MTX 15VRS NC Simulation Multitouch 力士乐数控系统

    力士乐数控系统MTX 15VRS NC Simulation Multitouch是一款先进的工业自动化解决方案,由全球知名工业技术供应商博世力士乐(Bosch Rexroth)开发。这款系统集成了先进的模拟和多点触控技术,专门用于数控(NC)应用...

    RTK-GPS系统设计及VRS差分方式分析比较.pdf

    RTK-GPS系统设计及VRS差分方式分析比较.pdf

    基于VRS技术的重庆GPS实时测量平台建设.pdf

    【基于VRS技术的重庆GPS实时测量平台建设】 本文主要探讨了如何利用虚拟参考站(VRS)技术构建重庆GPS实时测量平台,以提升城市建设和公共服务的空间定位效率和精度。该平台是重庆市地理信息综合服务系统(CQGISS)...

Global site tag (gtag.js) - Google Analytics