Java 为什么这个春豆没有初始化?它总是空的。
我配置了一个消息工厂bean,如下所示:Java 为什么这个春豆没有初始化?它总是空的。,java,web-services,spring,soap,spring-mvc,Java,Web Services,Spring,Soap,Spring Mvc,我配置了一个消息工厂bean,如下所示: <?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:ws="http://www.springframework.org/schema/web-service
<?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:ws="http://www.springframework.org/schema/web-services"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/web-services
http://www.springframework.org/schema/web-services/web-services-2.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="soapMessageFactory" class="javax.xml.soap.MessageFactory" factory-method="newInstance" />
<bean id="saajMessageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<constructor-arg ref="soapMessageFactory" />
</bean>
<bean id="myService" class="com.mypackage.TestEndPoint">
<property name="saajMessageFactory" ref="saajMessageFactory" />
</bean>
</beans>
TestEndpoint类如下所示
@Endpoint
public class TestEndPoint {
ObjectFactory objectFactory = new ObjectFactory();
SaajSoapMessageFactory saajMessageFactory;
@PayloadRoot(namespace="http://ws.mypackage.com", localPart="downloadSaajMessageRequest")
@ResponsePayload
public JAXBElement<DownloadResponseSaajType> invoke(@RequestPayload DownloadSaajMessageRequest req, MessageContext context ) throws Exception {
DownloadResponseSaajType response = new DownloadResponseSaajType();
//DownloadResponseSaajType.PayLoad payload = new DownloadResponseSaajType.PayLoad();
DataHandler handler = new javax.activation.DataHandler(new FileDataSource("c:\\temp\\maven-feather.png"));
SaajSoapMessage message = saajMessageFactory.createWebServiceMessage();
message.addAttachment("picture", handler);
message.addAttachment("picture", handler);
//payload.setMessagePayLoad(handler);
//response.setPayLoad(payload);
response.setRequestName("NAMEOF");
context.setResponse(message);
return objectFactory.createDownloadSaajMessageResponse(response);
}
public void setSaajMessageFactory(SaajSoapMessageFactory saajMessageFactory){
this.saajMessageFactory = saajMessageFactory;
}
public SaajSoapMessageFactory getSaajMessageFactory(){
return saajMessageFactory;
}
}
@Endpoint
公共类测试点{
ObjectFactory ObjectFactory=新的ObjectFactory();
SaajSoapMessageFactory saajMessageFactory;
@PayloadRoot(命名空间=”http://ws.mypackage.com,localPart=“下载SaajMessageRequest”)
@回应书
公共JAXBElement调用(@RequestPayload DownloadsAjMessageRequestReq,MessageContext上下文)引发异常{
downloadsresponsesaajtype response=新的downloadsresponsesajtype();
//DownloadResponseAjType.PayLoad有效载荷=新的DownloadResponseAjType.PayLoad();
DataHandler=new javax.activation.DataHandler(新文件数据源(“c:\\temp\\maven feather.png”);
SaajSoapMessage message=saajMessageFactory.createWebServiceMessage();
message.addAttachment(“图片”,处理程序);
message.addAttachment(“图片”,处理程序);
//setMessagePayLoad(处理程序);
//响应。设置有效载荷(有效载荷);
响应。setRequestName(“名称”);
setResponse(消息);
返回objectFactory.createDownloadSaajMessageResponse(响应);
}
public void setSaajMessageFactory(SaajSoapMessageFactory saajMessageFactory){
this.saajMessageFactory=saajMessageFactory;
}
公共SaajSoapMessageFactory getSaajMessageFactory(){
返回saajMessageFactory;
}
}
我在尝试让端点工作时遇到了一些问题,当我尝试调试代码时,我发现saajMessageFactory从未初始化,它总是空的。配置有问题吗?您必须将PayloadRootAnnotationMethodEndpointMappingbean添加到配置xml中
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping"/>
您必须将PayloadRootAnnotationMethodEndpointMappingbean添加到配置xml中
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping"/>
我不是。“myService”只是我给com.mypackage.TestEndPoint类的id,这样我就可以初始化TestEndPoint类中的属性。我这样做不对吗?从ApplicationContext获取MyServicebean,看看saajMessageFactory是否正确初始化。如何初始化?我需要将其添加到配置中吗?我不需要。“myService”只是我给com.mypackage.TestEndPoint类的id,这样我就可以初始化TestEndPoint类中的属性。我这样做不对吗?从ApplicationContext获取MyServicebean,看看saajMessageFactory是否正确初始化。如何初始化?是否需要将其添加到配置中?