【问题标题】:injection of property in xml fails (spring-ws config)在 xml 中注入属性失败(spring-ws 配置)
【发布时间】:2011-05-31 15:03:30
【问题描述】:

我正在使用 Spring-WS 并具有以下 spring-ws-servlet.xml 文件。 defaultURI 和 marshaller 的注入不起作用,因为当我访问服务客户端中的方法时,这些属性为空。 发生的情况是使用正确的值调用设置器,但在客户端 getSum() 的方法中,这些值是空的。有什么问题?

<?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:context="http://www.springframework.org/schema/context"
   xmlns:sws="http://www.springframework.org/schema/web-services"
   xmlns:oxm="http://www.springframework.org/schema/oxm"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
   http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">

<context:component-scan base-package="com.coral.project.endpoints"/>

<sws:annotation-driven />

<sws:dynamic-wsdl id="test" portTypeName="TestCase" locationUri="/testService/"
                  targetNamespace="http://www.example.org/schemasDef/test/definitions">
    <sws:xsd location="/WEB-INF/schemasDef/test.xsd"/>
</sws:dynamic-wsdl>

<bean id="springWSClient" class="com.coral.project.endpoints.SpringWSClient">
    <property name="defaultUri" value="http://localhost:8080/parking/springServices/testService"/>
    <property name="marshaller" ref="marshaller" />
    <property name="unmarshaller" ref="marshaller" />
</bean>

<oxm:jaxb2-marshaller id="marshaller">
    <oxm:class-to-be-bound name="com.coral.project.entity.Street"/>
</oxm:jaxb2-marshaller>
</beans>

我得到了例外:

在组件上调用 encodeEnd 时出现异常:{Component-Path: [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /appealConversionStatusReport.jsp][Class: org.apache.myfaces.custom.div.Div,Id: j_id_jsp_1406177460_4][类:com.exadel.htmLib.components.UITable,Id:j_id_jsp_1406177460_5][类:com.exadel.htmLib.components.UITbody,Id:j_id_jsp_1406177460_6][类:org.apache.myfaces.component.html.ext .HtmlInputHidden,Id: j_id_jsp_546672833_0]}

原因: java.lang.IllegalStateException - 未注册编组器。检查 WebServiceTemplate 的配置。

客户:

package com.coral.project.endpoints;

import java.io.IOException;
import java.io.StringWriter;

import javax.inject.Inject;
import javax.xml.soap.SOAPException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.stream.StreamResult;

import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
import org.springframework.xml.transform.StringSource;

import com.coral.project.dao.ifc.StreetDao;
import com.coral.project.entity.Street;
import com.coral.utils.SpringUtils;

public class SpringWSClient extends WebServiceGatewaySupport {

public void getSum() throws SOAPException, IOException, TransformerException {
    StreetDao streetDao = SpringUtils.getBean(StreetDao.class);
    Street street = streetDao.findById(1);

    getWebServiceTemplate().marshalSendAndReceive(
    "http://localhost:8080/parking/springServices/testService",street);

}
}

【问题讨论】:

  • 愚蠢的错误!!!正在制作新的 SpringWSClient() 而不是注入它。

标签: spring spring-ws


【解决方案1】:

你在你的代码中new'ing SpringWSClient 实例吗?

另外,对于streetDao,您不需要使用SpringUtils.getBean。相反,它应该是一个用@Autowired(或@Resource)注释的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多