我在请求web服务时出错。
我用的是Spring Boot3.x
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<id>apps</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<target>2.1</target>
<episodeFileName>episode_apps</episodeFileName>
<xjbSources>
<xjbSource>src/main/resources/appstms.xjb</xjbSource>
</xjbSources>
<sources>
<source>src/main/resources/xsd/schema-apps.xsd</source>
</sources>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
<!--
<outputDirectory>
${project.parent.relativePath}/src/main/java/by/*/reception/electronic/docs/service/
</outputDirectory>-->
<packageName>*.reception.electronic.docs.service.generated.xml.entrypoint</packageName>
<!-- <outputDirectory>*.reception.electronic.docs.service.generate
</outputDirectory>-->
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
</executions>
</plugin>
配置
@EnableWs
@Configuration
public class WebServiceConfig {
private static final String NAMESPACE_URI = "http://*.com/apps";
@SuppressWarnings({"rawtypes", "unchecked"})
@Bean(name = "apsMessage")
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext appContext){
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(appContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/ws/*");
}
@Bean
public SaajSoapMessageFactory messageFactory() {
SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory();
messageFactory.setSoapVersion(SoapVersion.SOAP_12);
return messageFactory;
}
/* localhost:8080/ws/appsTms.wsdl
* */
@Bean(name = "appsTms")
public DefaultWsdl11Definition defaultWsdl11Definition(@Qualifier("appsTmsSchema") XsdSchema schema){
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("ApsPort");
wsdl11Definition.setLocationUri("/ws");
wsdl11Definition.setTargetNamespace(NAMESPACE_URI);
wsdl11Definition.setSchema(schema);
wsdl11Definition.setCreateSoap11Binding(true);
wsdl11Definition.setCreateSoap12Binding(true);
return wsdl11Definition;
}
@Bean(name = "appsTmsSchema")
public XsdSchema moviesSchema(){
return new SimpleXsdSchema(new ClassPathResource("xsd/schema-apps.xsd"));
}
}
和一个端点
@Endpoint
public class MessageEndpoint {
private static final Logger LOGGER = LoggerFactory.getLogger( MessageEndpoint.class );
private static final String NAMESPACE_URI = "http://*.com";
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "Multiply")
@ResponsePayload
public MultiplyResponse getMultiplyResponse(@RequestPayload Multiply messageRequest) throws Exception {
String fileName1 = messageRequest.getFileName1();
System.out.println(fileName1);
MultiplyResponse response = new MultiplyResponse();
response.setReturn("");
return response;
}
}
当我尝试执行查询并传递xml时,我甚至没有找到web服务端点所在的类。
我有个错误:
2020年6月8日16:44:27.935信息14660
o、 s.web.servlet.dispatcherservlet:初始化servlet'dispatcherservlet'
xml-22103:(致命错误)domresult不能是此类节点。2020年6月8日16:44:27.936调试14660
o、 s.web.servlet.dispatcherservlet:检测到standardservletmultipartresolver 08-06-2020 16:44:27.951调试14660 o.s.web.servlet.dispatcherservlet:enableloggingrequestdetails='false':请求参数和标头将被屏蔽,以防止潜在敏感数据的不安全记录08-06-2020 16:44:27.951信息14660
o、 s.web.servlet.dispatcherservlet:在15毫秒内完成初始化08-06-2020 16:44:27.952调试14660
o、 s.web.servlet.dispatcherservlet:“error”dispatch for post“/error”,参数={}08-06-2020 16:44:27.955调试14660
s、 w.s.m.m.a.requestmappinghandlermapping:Map到org.springframework.boot.autoconfigure.web.servlet.error.basicerrorcontroller#error(httpservletrequest)08-06-2020 16:44:27.976调试14660
o、 s.w.s.m.m.a.httpentitymethodprocessor:使用'application/json',给定[/]并支持[application/json,application/+json,application/json,application/+json]08-06-2020 16:44:27.976调试14660 o.s.s.m.a.httpentitymethodprocessor:写入[{timestamp=mon jun 08 16:44:27 msk 2020,status=500,error=internal server error,message=,path=/ws(截断)…]08-06-2020 16:44:28.004调试14660 o.s.web.servlet.dispatcherservlet:退出“错误”调度,状态500
知道是什么吗?怎么修?
1条答案
按热度按时间sd2nnvve1#
原因如下:
相邻的系统通过自己的xsd工作,并拥有一个命名空间uri,该uri与发送到web服务的文档Map。
相邻的系统是一个中介器,它接收xml文档以发送到另一个系统进行处理。
首先,她查看了web服务(soap)中的一个端点имеет 特定的命名空间(指向xsd)是基于wsdl构建的。
邻接系统能够处理:
注意:targetnamespace=“http://ws.transit.ls.com"
必须将此类targetnamespace指向:
您还必须使用能够在相邻系统中工作的xsd(不得在xsd中更改任何内容)
如果您正在创建新的web服务soap并从第一个开始创建一个应用程序,那么另一个客户机将使用xsd。
但就我而言,我必须遵守禁止制度的规定。