加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

规则引擎Visual Rules Solution开发基础教程【连载11】--WebServ

发布时间:2020-12-16 22:34:17 所属栏目:安全 来源:网络整理
导读:WebService 搭建及调用 ???????? webservice的应用已经越来越广泛了,CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。举一个CXF开发webservice的例子吧。 ? 一、环境搭建 ? ???????? 首先,下载CXF,官网(http://cxf.apache.or



WebService 搭建及调用


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

一、环境搭建?

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




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

?

伦理片?http://www.dotdy??.com/

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

二、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,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 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?

找到工程中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编程完成了,为了能知道创建的方法是否存在着问题,我们需要进行测试。
?

? 影音先锋电影?http://www.iskdy .com/
6.新建测试项?

???????? 点击工程“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。?

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<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();?
}?
}?
}
?

8.测试结果?

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




9.工程发布?

???????? 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,可省略,其他端口号是不能省略的,如h?
ttp://localhost:8080?
???????? webService_cxf—工程名?
???????? webServices是由web.xml配置文件决定,如下图:
?

?


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




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

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




???????? 完成。?

三、VRS调用WebService服务?


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

1.新建规则包Client?

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

?


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

?


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

?


???????? 显示如下:?

?


2.调用日期型接口?

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




???????? 勾选方法?




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

?


???????? 规则配置如下,其中?

?





???????? 测试结果?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读