使用XFire开发WebService

Webservice遇到Client received SOAP Fault from server: 服务器无法处理请求,未将对象引用设置到对象的实例。 Exception in thread "main" com.sun.xml.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。 Please see the server log to find more detail reg... 阅读详情

使用XFire开发WebService,环境:Myeclipse5.0GA (eclipse3.2) XFIRE1.1 Tomcat 6.0.2 现在就开始:

1. 在Myeclipse中新建一个WEB Service PROJECT,如XFIRE2007。

2. 选中工程XFIRE2007,右键导入Myeclipse--Add Spring Capabilities....,所有均选择默认值。

3. 以上步骤完成后,修改src目录下的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>
 <bean id="echoBean" class="cutelion.xfire.DIYEchoImpl" />
</beans>

4.
在src目录下新建log4j.properties,内容如下:

log4j.rootLogger=WARN, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

5. 修改WEB-INF目录下的web.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <!-- <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
   -->
 
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/applicationContext.xml
        classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

    <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>/*</url-pattern>
    </servlet-mapping>
</web-app>

 

6. 在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>
    <!-- START SNIPPET: xfire -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="urlMap">
            <map>
                <entry key="/EchoService">
                    <ref bean="echo"/>
                </entry>
            </map>
        </property>
    </bean>
   
    <!-- Declare a parent bean with all properties common to both services -->
    <bean id="echo" class="org.codehaus.xfire.spring.remoting.XFireExporter">
        <property name="serviceFactory">
            <ref bean="xfire.serviceFactory"/>
        </property>
        <property name="xfire">
            <ref bean="xfire"/>
        </property>
        <property name="serviceBean">
            <ref bean="echoBean"/>
        </property>
        <property name="serviceClass">
            <value>cutelion.xfire.DIYEcho</value>
        </property>
    </bean>
    <!-- END SNIPPET: xfire -->
</beans>

7. 在src下面建立cutelion.xfire包,用于服务发布, 其中建立一个DIYEcho.java接口和DIYEchoImpl.java类实现。内容如下:
接口: DIYEcho.java

// START SNIPPET: echo
package cutelion.xfire;

public interface DIYEcho
{
    String DIYecho(String in);
}
// END SNIPPET: echo


接口实现: DIYEchoImpl.java

// START SNIPPET: echo
package cutelion.xfire;

import java.text.DateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * Provides a default implementation of the echo service interface.
 */
public class DIYEchoImpl implements DIYEcho
{
    public String DIYecho(String in)
    {  
     GregorianCalendar today = new GregorianCalendar();
     Date d = today.getTime();
     DateFormat df = DateFormat.getDateTimeInstance();
     String todaytostring = df.format(d);
        return todaytostring+"
輸入:"+in;
    }
}
// END SNIPPET: echo

8. 到这里现在可以部署服务了, 工程右键Myeclipse-->Add and Move Project Deployment..... 到 Tomcat 下面。重启Tomcat。

9. 一切OK,Tomcat启动正常,没有错误。可以访问WSDL,在浏览器中输入:
http://127.0.0.1:8080/XFIRE2007/EchoService?wsdl
出现一大堆的XML,表明服务EchoService发布成功.
在浏览器中输入:http://127.0.0.1:8080/XFIRE2007/EchoService 出现
Invalid SOAP request.  OK!

以上表明服务发布成功。以下为客户端的测试:


为了充分体现SPRING的IOC特性,现做以下测试。
10.
在src下建立一个applicationContext-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="Client_Params" class="cutelion.xfire.client.ClientParams">
  <property name="
訪問地址">
   <value>http://localhost:8080/XFIRE2007/EchoService</value>
  </property>
  <property name="
輸入字符串">
   <value>1234567890ABCDEFG XFIRE
與SPRING集成成功! </value>
  </property>
 </bean>
</beans>

11.
在src下建立Package: cutelion.xfire.client,其中建立一个客户端参数的类ClientParams.java 和测试服务的类 TestDIYEcho.java 其内容如下所示:

ClientParams.java

package cutelion.xfire.client;

public class ClientParams {
 private String
輸入字符串;
    private String
訪問地址;
 public String get
輸入字符串() {
  return
輸入字符串;
 }

 public void set輸入字符串(String 輸入字符串) {
  this.
輸入字符串 = 輸入字符串;
 }

 public String get訪問地址() {
  return
訪問地址;
 }

 public void set訪問地址(String 訪問地址) {
  this.
訪問地址 = 訪問地址;
 }
}

TestDIYEcho.java

package cutelion.xfire.client;

import java.net.MalformedURLException;

import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import cutelion.xfire.DIYEcho;
import cutelion.xfire.client.ClientParams;
public class TestDIYEcho {
 public static void main(String args[]) {
  ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext-client.xml");
  ClientParams cp=(ClientParams)ctx.getBean("Client_Params");
  String inputString=cp.get
輸入字符串();
  Service srvcModel = new ObjectServiceFactory().create(DIYEcho.class);
  XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
    .newInstance().getXFire());
  //String url = "http://localhost:8080/XFIRE2007/EchoService";
  String url = cp.get
訪問地址();
  try {
   DIYEcho srvc = (DIYEcho) factory.create(srvcModel, url);
   System.out.print(srvc.DIYecho(inputString));
  } catch (MalformedURLException e) {
   e.printStackTrace();
  }
 }
}

12. 完成TestDIYEcho.java的编写后,直接进行测试( alt+shift+X  J )运行:
结果为:
2007-1-18 15:37:30
輸入:1234567890ABCDEFG XFIRE與SPRING集成成功

Xfire配置Web Service+Spring+Hibernate详细流程及补充+测试实例.rar 注:之所以有此补充是因为看完了原文之后发现虽然可用但是hiberante获取bean时无法得到上下文. invalid SOAP request: 当在浏览其中报此错误的时候,实际上是因为WebService针对的是客户端请求,而不是浏览器的访问. 只要建立了测试类,在测试类中访问就可以了. applicationContext.xml 一直是放置在WEB-INF目录下的就可以了,原文档后期补充的那点对这个文件的描述好像有些乱 另外,IHello等类的包随便默认哪个都行,文中该类的位置前面是factory后面就改到service中去了 立即下载

相关推荐

激光三角测量法:斜射与直射式技术的原理与应用解析

本文深入解析激光三角测量法中斜射式与直射式技术的原理、应用及对比。斜射式适用于高精度小范围测量,尤其擅长处理反光表面;直射式则适合大范围位移检测,结构更简单。文章详细介绍了两种技术的光路分析、数学建模、应用场景及选型建议,并探讨了系统校准与误差分析方法,为工业检测领域提供实用参考。

weixin_29280219的博客 414

HTTP 状态代码 错误列表

如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求。 此状态代码提供了有关请求状态的信息,且为 Googlebot 提供了有关您网站和请求的

zhangnn5的专栏 3825

Plant Simulation新手入门:从零开始搭建工厂布局仿真模型(附完整代码)

本文为Plant Simulation新手提供了一个从零开始搭建工厂布局仿真模型的完整实战教程。通过一个玩具工厂车间布局优化的具体案例,详细讲解了从数据准备、模型构建、核心逻辑编程到连接遗传算法进行自动优化的全流程,并附有完整代码示例,帮助读者快速掌握这一工业仿真软件的核心应用。

metal的博客 553

XFire与Spring结合的几种方式

、使用org.codehaus.xfire.spring.XFireSpringServlet与ServiceBean1.1 web.xml的配置  Spring Image Database Spring Image Database sample application   These values are used by ContextLoaderListener, defined

我的世界我的梦 5568

PXE 批量安装 Ubuntu 20.04

原文链接:https://www.cpweb.top/1698 一、介绍   Ubuntu 20.04 的服务器安装程序支持新的操作模式:自动安装(automated installation)。自动安装可以通过自动安装配置提前回答所有这些配置问题,并使安装过程无需任何交互即可运行。   在 Ubuntu 18.04 中,用的应答文件是 preseeds(预配置文件),它基于 debian-installer(aka di)来实现自动安装的。需要注意的是,如果你使用的是 cobbler,那你应....

supahero的博客 1万+

GEO生信数据挖掘实战:从临床信息提取到多维分组可视化(聚类与PCA)

本文以GSE1297数据集为例,详细讲解了GEO生信数据挖掘中临床信息提取与分组构建的实战流程。通过R语言解析样本元数据,利用字符串处理技术从文本中精准构建疾病与对照分组,并强调使用层次聚类图和PCA图进行可视化验证,确保分组合理性与分析可靠性,为后续差异表达等高级分析奠定坚实基础。

cheese的博客 361

webservice

http://localhost:8080/webService/service/HelloWorldService.ws   直接在浏览器中访问(远程调用)   http://hi.baidu.com/shirdrn/blog/item/683bc936e7e6bbdba3cc2be6.html   http://www.qqread.com/java/2008/02/u396604_3...

zw7534313的专栏 225

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

在Eclipse上使用XFire开发WebService

  终于,使用Java完成了一个WebService的例子,其中的一个非常小的问题,折腾了我将近一天的时间。下面给出步骤,说明在Java平台上如何开发WebService。  采用的工具:Eclipse3.1.2 + Tomcat5.5 + XFire1.1 。使用XFire开发WebService应该说非常的

技术收藏 714

SAP 公司间采购简介

SAP公司间采购(Intercompany Procurement)是指企业集团内部不同法人实体之间的采购和销售流程。这种流程在跨国公司或有多个独立运营子公司的企业中非常常见。SAP提供了标准的功能来处理公司间采购,确保财务和物流流程的透明性和效率。以下是SAP公司间采购的基本流程及其相关模块的简介。

我小时候很黑的博客 1378

matlab 显示曲面网格【2025最新版】

matlab点云工具箱对点云三维重建结果显示的函数。博客长期更新,本文最近更新时间为:2025年9月14日。

点云侠的博客 2581

使用XFire组件开发WebService实例

使用XFire组件开发WebService实例   1、WebService简介   WebService又是一种高级应用,与之前学习的Struts、Spring、Hibernate等框架不同。WebService是面向服务的架构(SOA)。那么它到底是做什么用的?什么才是面向服务的架构?   让我们来看一种需求,集团公司可能具有多种WEB应用。比如,前年开发了个进销存系统、去年开发了一个

Jim Li 531

LVGL v8学习笔记 | 09 - 进度条控件的使用方法(bar)

lv_bar_set_range必须放在lv_bar_set_mode前面,否则不生效。bar对象的API在lv_bar.h中声明,以lv_bar_xxx命名。此事件可以用来在进度条更新值之后更新别的控件(比如进度条旁边的文字)。可以看到,默认创建的进度条值是0到100。(3)设置进度条的范围值(最大值和最小值)(2)获取进度条的起始值。(3)获取进度条的最小值。(4)获取进度条的最大值。(1)设置进度条的当前值。(2)设置进度条的起始值。(1)获取进度条当前值。(5)获取进度条的模式。

Mculover666的博客(嵌入式) 1730

myeclipse使用xfire开发webservice

1.新建一个webservice project,如图所示 2.点击下一步出现,如下对话框 3.接着点下一步 4.下面点击finish项目就自动生成了,结构如下 5.下面先来写接口和实现类 package org.lxh.dao; public interface SayHello { public void say(String name); } pa

技术成就梦想 2105

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用XFire组件开发WebService实例 附源码

1、WebService简介   WebService又是一种高级应用,与之前学习的Struts、Spring、Hibernate等框架不同。WebService是面向服务的架构(SOA)。那么它到底是做什么用的?什么才是面向服务的架构?   让我们来看一种需求,集团公司可能具有多种WEB应用。比如,前年开发了个进销存系统、去年开发了一个ERP、今年又开发了一个OA。现在这家集团公司需

isunlight001的专栏 6169

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[xfire]使用xfire开发webservice的简单示例

目前项目上有用到xfire,所以临时看了些xfire的资料和示例,自己照着写了一个简单示例。   xfire在2007年后已经停止更新,正式更名为apache cxf,也可以说是xfire2.0。   xfire最后的版本是xfire1.2.6   1.新建一个dynamic project   2.lib中加入xfire依赖的jar,这个可以从xfire-distribution-1.2...

GoodIdea 544

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

使用XFire开发WebService入门教程

首先,我们在eclipse中建立一个WebService工程作为服务端,并编写如下代码:IHelloService.java  服务接口,有一个方法,参数和返回值均为复杂类型User package test;public interface IHelloService ...{   public User getUser(User user);} User.java

我的世界我的梦 1万+

在MyEclipse中使用XFire开发WebService

在MyEclipse中使用XFire开发WebService客户端通过web service调用服务器端的sayHello方法开步骤:1 服务器端1.1 创建Web Proejct(HelloWS) 1.2 添加Xfire支持 添加完xfire之后的工程,如图: 1.3 新建web service类及方法新建com.newer.service.HelloService类,同时在该类中添加sayHe...

JavaEE架构与开发 146

使用XFire开发及调用WebService的步骤 web services readme

使用XFire开发及调用WebService的步骤:一、服务提供者的开发工作:1、准备工作: 到XFire网站(http://xfire.codehaus.org/Download)下载最新的 XFire发布版本,比如现在最新的版本是:xfire-distribution-1.2.6.zip。 将该压缩包解压,并将其lib目录下的所有jar包以及xfire-all-1.2.6.jar 导入到工程中

wodezuiai181826931的专栏 637
上一篇: Struts2学习(三) 设置默认通配符
下一篇: Struts2学习(四) validation验证
caok
博客等级 码龄22年 88粉丝 59原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值