我正在使用 Spring-WS 并具有以下 spring-ws-servlet.xml 文件。
defaultURI 和编组器的注入不起作用,因为当我到达服务客户端中的方法时,这些属性为空。
所发生的情况是,使用正确的值调用 setter,但在客户端 getSum() 方法中,这些值为 null。可能出什么问题了?
<?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:[类:org.ajax4jsf.component.AjaxViewRoot,ViewId:/appealConversionStatusReport.jsp] [类: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);
}
}
Are you new
'ingSpringWSClient
你的代码中的实例?
另外,对于 streetDao,您不需要使用SpringUtils.getBean
。相反,它应该是一个带有注释的字段@Autowired
(or @Resource
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)