`
Sev7en_jun
  • 浏览: 1225321 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
84184fc0-d0b6-3f7f-a3f0-4202acb3caf5
Apache CXF使用s...
浏览量:111297
社区版块
存档分类
最新评论

使用XFire+Spring+Struts构建Web Service及测试

 
阅读更多

  FROM: http://shade8109.blog.163.com/blog/static/130110604200911294257292/?fromdm&fromSearch&isFromSearchEngine=yes

1. 开发环境:
        JDK 1.5,   Tomcat 5.5.25,   MyEclipse 6.0 其实也没什么特别之处.

2. 建立工程, 配好环境:
        在MyEclipse下建立Web Project,取名为:wss, (意为:Webservice, Spring, Struts)

        对wss增加:Web Service Capabilities, 记得选择XFire的Core Libraries

        对wss增加:Struts Capabilities

 

3.修改web.xml,使之响应不同的请求以及XFire与Spring的结合

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
http://java.sun.com/dtd/web-app_2_3.dtd">


<web-app>
<display-name>YMCN-XFireService</display-name>
<!-- begin Spring配置 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml</param-value>
</context-param>

 

 

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.ymcn.filter.CharacterEncoding</filter-class>
</filter>


<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>

 

4.在/WEB-INF/下编写applicationContext.xml 和 xfire-servlet.xml两文件,此二文件是必须的,前一个是Spring的,后一个是XFire的,其为被XFire自动加载.

applicationContext.xml 的内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
</beans>

 

5.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>
<!-- 引入XFire预配置信息 -->
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>

<!-- 使用XFire导出器 -->
<bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
   <!-- 引用xfire.xml中定义的工厂 -->
   <property name="serviceFactory" ref="xfire.serviceFactory"/>
   <!-- 引用xfire.xml中的xfire实例 -->
   <property name="xfire" ref="xfire"/>
</bean>

<!-- 定义所有访问 WEB服务的url -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="urlMap">
    <map>
        <entry key="/HelloWorldService.ws">

            <ref local="HelloWorldService"/>

        </entry>
    </map>
   </property>
</bean>

<!-- HelloWorld WEB服务 -->
<bean id="HelloWorld" class="org.ymcn.ws.impl.HelloWorldImpl"/>

<bean id="HelloWorldService" parent="baseWebService">
   <!-- 业务服务bean -->
   <property name="serviceBean" ref="HelloWorld"/>
   <!-- 业务服务bean的窄接口类 -->
   <property name="serviceClass" value="org.ymcn.ws.HelloWorld"/>
  </bean>

</beans>

 

此时,我们就已经构建出了一个Web Service,我们在IE中输入:http://localhost:8888/wss/HelloWorldService.ws?wsdl

就能看到WSDL.

 

6.通过Java application 测试:编写JAVA简单测试类:

首先,在wss/src下建个客户端调用Web Service的Spring配置文件: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="HelloWorldService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
   <property name="serviceClass"><value>org.ymcn.ws.HelloWorld</value></property>
   <property name="wsdlDocumentUrl"><value>http://localhost:8888/wss/HelloWorldService.ws?wsdl</value></property>
</bean>

</beans>

 

到此我们可以通过client.xml获得HelloWorld

 

package org.ymcn.test.client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.ymcn.ws.HelloWorld;

 

public class HelloWorld2 {
    HelloWorld helloWorld = null;
  
    public static void main(String[] args) {
       HelloWorld2 test = new HelloWorld2();
       test.testClient();
    }

    public void testClient() {
       ApplicationContext ctx = new ClassPathXmlApplicationContext("client.xml");
       helloWorld = (HelloWorld)ctx.getBean("HelloWorldService");
     
       System.out.println(helloWorld.sayHello("老牛啊"));
    }
}


运行此程序,如输出:你好啊,老牛啊 说明正确.

 

7.在表示层(Struts)通过JSP调用Web Service:

JSP文件:

 

 

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="html" uri="html" %>
<%@ taglib prefix="bean" uri="bean" %>
<%@ taglib prefix="logic" uri="logic" %>
<html>
<head>
<title>测试WebService - HelloWorld</title>
</head>

<body>

<logic:present name="NAME" scope="request">
<font color="red"><bean:write name="NAME" scope="request"/></font>
</logic:present>

<br>
<form action="/wss/ws/HelloWorld.ymcn" method="post">
用户名:<input type="text" name="name" style="width:500px">
<br><br>
<input type="submit" name="Submit" value=" 提交 "/>
</form>

</body>
</html>

 

8,struts-config.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "
http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />

<action-mappings>
<action path="/ws/HelloWorld" type="org.ymcn.struts.action.WSHelloWorldAction" scope="request" validate="false">
      <forward name="hello-ok" path="/ws/helloWorld.jsp"/>
    </action>
</action-mappings>

<message-resources parameter="org.ymcn.struts.i18n.i18n" />
</struts-config>

 

9.JSP请求Action类:WSHelloWorld

package org.ymcn.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.ymcn.ws.HelloWorld;

public class WSHelloWorldAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) throws Exception {
 
   String name = (String)request.getParameter("name");
 
   ApplicationContext ctx = new ClassPathXmlApplicationContext("client.xml");
     HelloWorld helloWorld = (HelloWorld)ctx.getBean("HelloWorldService");
     String result = helloWorld.sayHello(name);
   
 
     if(result == null) {
     result = "对不起, 调用WEB服务失败, 请重试......";
     }
   
     request.setAttribute("NAME", result);
   
   return mapping.findForward("hello-ok");
}
}

 

到些,所有的工作已完成,部署WEB工程,启动Tomcat

 

10.在IE中输入:http://localhost:8888/wss/ws/helloWorld.jsp

 

 

点击提交:

 

 

 

恭喜你,你的工作得到了回报~~~~~~~~~~~~~~~~~~~~~~~~~~

最后是过滤器类了,我用的全是UTF-8,内容如下:

 

package org.ymcn.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharacterEncoding implements Filter
{
    protected String encoding;
    protected FilterConfig filterConfig;

    public void init(FilterConfig filterConfig) throws ServletException
    {
        this.filterConfig = filterConfig;
        this.encoding = "utf-8";
    }

    public void destroy( )
    {
        this.encoding = null;
        this.filterConfig = null;
    }

    public void doFilter(ServletRequest request, ServletResponse response,
       FilterChain chain) throws IOException, ServletException
    {
    request.setCharacterEncoding(encoding);
        chain.doFilter(request, response);
    }

    protected String selectEncoding(ServletRequest request)
    {
        return (this.encoding);
    }
}

好的,所有工作做完了

分享到:
评论

相关推荐

    整理xfire和spring的集成 web service 面向服务编程 java

    【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...

    spring3+hibernate4+struts2+maven全注解整合

    "spring3+hibernate4+struts2+maven全注解整合"的主题意味着将这四个组件通过注解的方式进行集成,以构建一个高效且易于维护的Web应用。 Spring是企业级Java应用程序的核心框架,它提供了依赖注入(DI)和面向切面...

    Myeclipse10 用 Xfire构建 webservice

    本文将详细介绍如何使用MyEclipse10和Xfire来构建Web服务。 一、MyEclipse10简介 MyEclipse10是基于Eclipse的商业级Java开发平台,支持多种技术栈,包括Java EE、Spring、Struts等。其强大的功能包括代码编辑、调试...

    MyEclipse[实战开发讲解入门..XFire.Web.Service.入门

    《MyEclipse实战开发讲解入门XFire.Web.Service.入门》 在IT行业中,MyEclipse作为一款强大的Java集成开发环境,被广泛应用于企业级应用的开发。本资源包旨在为初学者提供一个全面的MyEclipse实战开发指南,特别是...

    ssh下做webservice需要的xfire所有jar

    SSH(Struts+Spring+Hibernate)是一个常见的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。在SSH框架下实现Web服务(WebService),我们可以使用XFire库,它是一个...祝你在构建Web服务的道路上一切顺利!

    java xfire Webservices实例

    Java XFire Web服务实例 Java XFire 是一个开源框架,它允许开发人员快速、轻松地创建和消费Web服务。在Java世界中,Web服务...通过深入学习和实践,你可以掌握Web服务的核心概念,并利用XFire构建自己的分布式系统。

    XFire1.2.6

    通过简单的XML配置或者编程式API,可以将XFire集成到Spring、Struts等主流Java应用框架中,实现Web服务的快速开发。 总结,XFire 1.2.6是一个强大而灵活的Web服务开发工具,尤其适合那些希望避免复杂Web服务框架的...

    struts2+jquery实例

    **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于构建Web应用程序。它提供了一种强大的、可扩展的架构,简化了开发过程,降低了代码的复杂性。Struts2的核心是Action类,它是业务...

    web service调用与发布技术

    6. **与其他框架集成**:XFire可以很好地与Spring、Struts等流行框架集成,便于构建完整的Web应用。 然而,随着技术的发展,XFire已被Apache CXF所取代,后者继承了XFire的优点,并增加了更多的功能和改进。Apache ...

    MyEclipse使用指南(1-17章)pdf 电子书

    8. **第十五章 开发XFire Web Service应用**:XFire是早期的Web服务框架,后来被Apache CXF吸收。这章可能涉及如何在MyEclipse中创建和发布Web服务,以及消费外部Web服务。 9. **第十六章 开发 EJB 应用**:...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    MyEclipse 6 Java 开发中文教程.rar

    最后,"第十五章 开发XFire Web Service应用.pdf"介绍了XFire,这是一个早期的Web服务框架,现在已被Apache CXF所取代。这部分内容将教读者如何在MyEclipse 6中创建和消费Web服务,利用XML和SOAP协议进行分布式系统...

    CXF webservice初学笔记

    本笔记将探讨CXF的基本概念、如何使用CXF构建Webservice以及与之相关的技术栈,如Spring、Struts2等。 1. **CXF简介** - CXF(CXF Xfire + XWS)是两个项目的合并,提供了SOAP、RESTful、XML/HTTP、WS-*等协议的...

    Myeclipse学习资料

    2. **Struts 2框架**:Struts 2是MVC模式的经典实现,用于构建Web应用程序。它提供了丰富的动作和结果类型,支持拦截器,能与多种视图技术配合。第十二章同样探讨了Struts 2的使用,并结合Spring展示了它们的协同...

    MyEclipse 6 Java 开发中文教程

    在这里,你将学习到如何使用MyEclipse 6来创建、测试和发布Web服务,理解服务接口和服务实现的原理。 第四,第十三章介绍了JPA(Java Persistence API),这是Java标准的ORM规范,旨在提供统一的持久层框架。通过...

    MyEclipse 6 Java开发中文教程(11-17)

    本章将介绍如何在MyEclipse中使用XFire创建和部署Web服务,以及如何进行客户端调用和服务测试。 7. **第17章 - MyEclipse.UML.建模**:MyEclipse不仅仅是一个Java开发工具,还支持UML建模,可以帮助开发者设计和...

    MyEclipse6JavaEEDev_PDF

    8. **第十五章 开发XFire Web Service应用**:XFire(后来演变为Apache CXF)是一个Web服务框架,允许开发者创建和消费Web服务。章节内容将涉及在MyEclipse中创建、发布和测试Web服务的流程。 9. **第十七章 ...

    myeclipse 6 开发中文教程后八章

    6. **开发XFire Web Service应用**:XFire是早期的Web服务实现,提供了SOAP和RESTful服务的开发支持。在这一章中,读者将学习如何使用XFire创建、发布和调用Web服务,理解Web服务的基础概念。 7. **图形界面开发-...

    《MyEclipse 6 Java 开发中文教程》11-18章

    这一章将引导读者理解Web服务的概念,掌握在MyEclipse 6中使用XFire创建和发布Web服务,以及如何进行服务调用和测试。 第十六章:开发EJB应用 Enterprise JavaBeans (EJB) 是Java EE的核心组件之一,用于构建分布式...

Global site tag (gtag.js) - Google Analytics