如何解决xfire发布的Webservice中Spring注入为空的问题

Spring框架使用中注入为空是一个比较头疼的问题,遇到Webservice和Spring框架配合时,这个问题更容易出现并很难发现问题的原因。

在做SSO系统中就遇到这样的问题,在Service的实现类中注入Ibatis数据库操作的Mapper一直为空,最终发现原因是xfire和Spring配合使用时和普通使用xfire的配置方式不同

xfire可以快速发布Webservice,通常情况下,只需要下边几个步骤。

1. 创建Service接口和实现类

例如SSOMethodsServices和SSOMethodsImpl

实现类中包括Spring注解形式的注入

@Autowired

private AccountMapper accountMapper;

2. 在web.xml中加入xfire的配置

<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <display-name>XFire Servlet</display-name>
    <servlet-class>
        org.codehaus.xfire.transport.http.XFireConfigurableServlet
    </servlet-class>
  </servlet>   

  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/servlet/XFireServlet/*</url-pattern>
  </servlet-mapping>   

  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

3.  在classpath目录下创建目录META-INF>xifre->services.xml

在services.xml文件中配置服务

<?xml version="1.0" encoding="UTF-8"?>
<beans>
<service xmlns="http://xfire.codehaus.org/config/1.0">
    <name>SSOMethodsServices</name>
    <serviceClass>com.test.sso.SSOMethodsServices</serviceClass>
    <implementationClass>com.test.sso.impl.SSOMethodsImpl</implementationClass>
</service>
</beans>

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/

这样,在浏览器输入 ip:port/projectname/services 就可以看到发布的Webservice,点击wsdl可以看到wsdl文件。

但是用soapUI进行测试,发现注入的accountMapper为空。出现问题。

尝试了直接手动注入,加@Component注解并添加包扫描等各种方法都无法注入,后来发现其实在xfire的example目录下有spring的例子,采用了不同的配置方法,这种方式证明是有效的。

主要区别是:

1. servlet class使用org.codehaus.xfire.spring.XFireSpringServlet  而不是org.codehaus.xfire.transport.http.XFireConfigurableServlet。这一点是最关键的。

2. 使用一个xfire-servlet.xml配置文件配置服务而不是services.xml,在web.xml的context-param中添加xfire-servlet.xml。

3. 在applicationContext.xml中加入Webservice实现类的Bean。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索webservice问题
, 问题
, spring
, webservice
, xfire
, 配置
, services
, spring注入
, soapui
, xfire webservices
, xifre
, 自定义对象 xfire
, xfire webservice
配置文件,webservice
xfire发布webservice、spring发布webservice、xfire webservice、xfire调用webservice、webservice xfire实例,以便于您获取更多的相关知识。

时间: 2024-12-04 23:44:41

如何解决xfire发布的Webservice中Spring注入为空的问题的相关文章

java程序调用xfire发布的webService服务(二)

在上一篇的调用xfire发布的webService服务中,我只是从服务端返回了一个字符串给客户端,却没有测试从客户端传递数据给服务端.而实际应用中一般是不太可能只出现这样的应用场景的,因此我便更进一步测试了客户端传递数据给服务端. 因为相关的jar包在上一篇已经说过,因此便不再重复说明,这次的测试步骤如下: 一.测试向服务端传递字符串(重点在第二个):     为了进一步理解服务搭建,我重新写了一个服务端服务类: 接口: package xfireTest; public interface X

java程序调用xfire发布的webService服务

昨天用xfire搭好了一个简单的webService的服务,可以在浏览器访问,今天便想要尝试以下如何调用这个服务及相关的方法.在网上查找了一些资料后,实现过程如下. 1.创建一个maven web项目,并创建一个带有main方法的类. 2.导入xfire依赖的一些jar包,为了简单起见,我就把搭建服务端时的jar包都考了过来,放在lib文件夹下,然后如上一篇搭建时一样把jar加入到build path中.                  3.创建一个和服务端一样的接口类,必须要有这个接口类才可

用Xfire发布的WebService服务用什么去调用最好

问题描述 服务端是一个wsdlURL地址那种.那边一定是用的Xfire,我想问下,我用Axis2还是Xfire或者CFX去调用?或您推荐一个更好的. 解决方案 解决方案二:都可以,不管用那个都是根据wsdl来生成客户端的,看你自己熟悉那个了.解决方案三:嗯.谢谢一般都是用哪种方式来调用?生成本地存根还是通过地址调用呢?

WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService

在现今的Web应用中经常使用Spring框架来装载JavaBean.如果要想将某些在Spring中装配的JavaBean 发布成WebService,使用Axis2的Spring感知功能是非常容易做到的. 在本文的例子中,除了<Tomcat安装目录>\webapps\axis2目录及该目录中的相关库外,还需要 Spring框架中的spring.jar文件,将该文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\lib 目录中. 下面先建立一个JavaBe

发布-webservice中的wsdl格式

问题描述 webservice中的wsdl格式 我的是用xfire发布的.我的远程访问的wsdl和别人的有点区别 我的 别人的 几个问题 1:标签中我的是 他的都是 有关系吗.或者是怎么改成他那样的 2:在参数列表中.我的name属性是in1,int2 如何改成他那样的直接知道是要输入什么,name=flag,name=message等 2:如果我想把让我的返回参数弄成多个属性组成的对象,就像他那样的.怎么弄? 解决方案 第一个问题.我的标签都是xsd的,他的是s的,有关系吗.或者如何改成他那样

Java编程中使用XFire框架调用WebService程序接口_java

 JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊.但就算是伤心,我们也还是要完成的.JAVA也不乏比较好的实现,如xfire,jersey,CXF. 这里我们就一起来看一下xfire的实现.  1)首先,当然是要下包啦,这个普通人都知道.http://xfire.codehaus.org/Download可以到这里去下,可以下all也可以下dis

php中nusoap调用java axis2发布的webservice

调用webservice 开发环境是:Eclipse3.6 (java IDE)+ JDK 1.6 + Tomcat 7.0 + Axis2 1.6 + php 5.2.14 (IDE为eclipse-php-helios-SR1-win32.zip)+ apache2.2.15,这些软件随时都在更新,请读者谷歌百度一下到官网下载. 一.在java端编写服务,并利用axis2发布成服务 本文的服务名为sayHi,里面有一个函数sayHello():  代码如下 复制代码 package Hi;

【转】WebService中使用自定义类的解决方法(5种)

原址:http://www.cnblogs.com/lxinxuan/archive/2007/05/24/758317.html Demo下载:http://files.cnblogs.com/lxinxuan/wa.rar        最近一个项目要用到webservice调用业务层类,刚开始的时候遇到了一点小麻烦,经过这两天的总结和实践,终于总结出几个比较常见的情况下的解决方法.         不知道大家是怎么解决,可能太简单了,所以没有觉得它是一个问题.反正我在博客园中没有搜索到相关

.net-.NET发布的webservice方法,怎样在返回 soap 格式的数据中中,去掉方法名节点

问题描述 .NET发布的webservice方法,怎样在返回 soap 格式的数据中中,去掉方法名节点 方法发布格式: [WebService(Namespace = "http://service.ws.ordertracer.lefeng.com")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class ITracerService : System.Web.Services.WebS