Spring+XFire实现WebService

c#小王子 c#小王子 2022-03-28 435 Java

一. web.xml 的配置


<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>xfire_spring_book</display-name>
<!-- start -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/applicationContext*.xml,
classpath:org/codehaus/xfire/spring/xfire.xml
</param-value>
</context-param>
<!-- Load Spring ContextServlet -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>*.ws</url-pattern>
</servlet-mapping>
</web-app>


说明:

1. /WEB-INF/spring/applicationContext*.xml 为 spring 的配置文件说明。

2. classpath:org/codehaus/xfire/spring/xfire.xml,它是在 XFire 核心 JAR 包中拥有一个预定义的

Spring 配置文件,它定义了 XFire 在 Spring 中必须用到的一些 Bean 和资源,需要引入这个预定义的配

置文件。

3. 在WEB-INF文件夹下创建xfire-servlet.xml文件,根据Spring规范,这个文件名起做xfire-servlet.xml,

其中 xfire 是 web.xml 配置的 DispatcherServlet 的名称。二。本例子参照 xfire 自带的例子 xfire-1.2.6\examples\book


1. 业务实体:Book.java


package com.neil.xfire.demobook;
/**
* @author <a href="mailto:wjhdtx@hotmail.com">Neil</a>
*/
// START SNIPPET: book
public class Book
{
private String title;
private String isbn;
private String author;
public String getIsbn()
{
return isbn;
}
public void setIsbn(String isbn)
{
this.isbn = isbn;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getAuthor()
{
return author;
}
public void setAuthor(String author)
{
this.author = author;
} 
}
// END SNIPPET: book


2. 服务接口:BookService.javapackage com.neil.xfire.demobook;


import java.util.Map;
/**
*
* Service finding books
*
* @author <a href="mailto:wjhdtx@hotmail.com">Neil</a> 
*
*/
public interface BookService
{
/**
* returns array of the books
* @return all books
*/
public Book[] getBooks();
/**
* Find book by id
* @param isbn isbn number
* @return found book
* @throws BookException cos tam
*/
public Book findBook(String isbn) throws BookException;
/**
* return book map
* @return all book as map
*/
public Map getBooksMap();
}


3. com/neil/xfire/demobook/BookService.aegis.xml:对服务类的提供的方法(方法的参数个数、类型,

返回值的类型)进行描述


<mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xfire.codehaus.org/schemas/1.0/mapping.xsd">
<mapping>
<method name="findBook">
<parameter index="0" mappedName="isbn"/>
<return-type mappedName="book" />
</method>
<method name="getBooksMap">
<return-type mappedName="BookMap" keyType="java.lang.String"componentType="com.neil.xfire.demobook.Book" />
</method>
</mapping>
</mappings>


三。spring 的相关配置文件&xfire-servlet.xml:本 web 应用包含了 webservice 的服务端以及客户端,下面 spring 的配置文件也有服务端和客户端之分,现在都放到一个 web 应用当中。

<一>服务端的:


1. WEB-INF/spring/applicationContext-webService.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="bookBean" class="com.neil.xfire.demobook.BookServiceImpl"></bean>
</beans>


注:由于是例子,Book 等 Bean 没有放到 spring 配置文件中,以后可扩充


2. WEB-INF/xfire-servlet.xml:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/BookService.ws">
<ref bean="bookXFireExporter"/>
</entry>
</map>
</property>
</bean>
<bean id="bookXFireExporter" parent="webService"
class="org.codehaus.xfire.spring.remoting.XFireExporter">
<property name="serviceBean">
<ref bean="bookBean"/>
</property>
<property name="serviceClass">
<value>com.neil.xfire.demobook.BookService</value>
</property>
</bean>
<!-- webService base --><bean id="webService" class="org.codehaus.xfire.spring.remoting.XFireExporter" abstract="true">
<property name="serviceFactory">
<ref bean="xfire.serviceFactory" />
</property>
<property name="xfire">
<ref bean="xfire" />
</property>
</bean>
</beans>


注:bean id="webService" 为通用的 bean


<二>客户端的:


1. WEB-INF/spring/webService-Client.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="bookWebService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
<property name="serviceClass">
<value>com.neil.xfire.demobook.BookService</value>
</property>
<property name="wsdlDocumentUrl">
<value>http://localhost:7777/xfire_spring_book/BookService.ws?wsdl</value>
</property>
</bean>
</beans>


2. 模拟客户端页面文件:webserviceTest.jsp


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.neil.util.SpringFactoryUtil,com.neil.xfire.demobook.*" %>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>WebService Client Page</title><meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<br/>
The result from web service are:<br/>
<%
try
{
BookService service = (BookService)SpringFactoryUtil.getBeanFromFactory(request,
"bookWebService");
Map booksMap = service.getBooksMap();
out.print("Received map with "+booksMap.size()+" book(s) <br/>");
out.println("--------------------------<br/>");
Book[] books = service.getBooks();
out.println("BOOKS:<br/>");
for (int i = 0; i < books.length; i++)
{
out.println(books[i].getTitle()+"<br/>");
}
out.println("--------------------------<br/>");
Book xfireBook = service.findBook("0123456789");
out.println(xfireBook.getAuthor()+"|"+xfireBook.getTitle()+"|"+xfireBook.getIsbn()+"<br/>");
out.println("--------------------------<br/>");
// Throw Exception
service.findBook("");
}
catch (BookException e) {
out.print(e.getFaultInfo().getDetailMessage());
}
%>
</body></html>


【下载地址】

百度网盘链接:https://pan.baidu.com/s/1EgRafEJ2gygzt74aAwaRzQ

提取码:yy64



相关文章


使用-JFreeChart来创建基于web的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。


文章热度: 166291
文章数量: 333
推荐阅读

FlashFXP绿色版网盘下载,附激活教程 632

FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具

Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 468

firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ

navicat for mysql中文绿色版网盘下载 441

Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq

火车头采集器(旗舰版)绿色版网盘下载 648

火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA

Photoshop(CS-2015-2023)绿色中文版软件下载 1093

安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之