抱歉,你问的太长了!
我有一个测试,使用带有GET谓词和JSON的服务,该服务使用SOAP服务和XML。并且我需要翻译JSON以便使用XML的SOAP服务。
我的Rest控制器
@Controller
public class CustomerController {
@Autowired
IEmpleadoService empleadoService;
@Autowired
EmpleadoValidator empleadoValidator;
@RequestMapping(value = "create", method=RequestMethod.GET, consumes = "application/json", produces = "application/json")
public String getCustomer( @RequestBody Empleado1 empleado1, BindingResult result, Model model) {
empleadoValidator.validate(empleado1, result);
if (result.hasErrors()) {
System.out.println("We can't continue");
}
System.out.println("empleado1:" + empleado1);
empleadoService.guardarEmpleado(empleado1);
return "listar";
}
}
现在我有了一个服务接口:
public interface IEmpleadoService {
public void guardarEmpleado(Empleado1 empleado1);
}
和实现...
@Service
public class EmpleadoServiceImpl implements IEmpleadoService {
@Override
public void guardarEmpleado(Empleado1 empleado1) {
//INTERFACE SOAP SERVICE
IWebService webService = new WebServiceImplService().getWebServiceImplPort();
webService.create(empleado1);
}
}
SOAP服务URL为:http://localhost:8080/WebServiceImplService/WebServiceImpl?WSDL
生成的EmpleAdo1
类
package org.bz.soap.client.service;
import javax.validation.constraints.NotEmpty;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;
/**
* <p>Java class for empleado1 complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="empleado1">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="apellidos" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="cargo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="fechaNacimiento" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
* <element name="fechaVinculacion" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
* <element name="id" type="{http://www.w3.org/2001/XMLSchema}long" minOccurs="0"/>
* <element name="nombres" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="numeroDocumento" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="salario" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="tipoDocumento" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "empleado1", propOrder = {
"apellidos",
"cargo",
"fechaNacimiento",
"fechaVinculacion",
"id",
"nombres",
"numeroDocumento",
"salario",
"tipoDocumento"
})
public class Empleado1 {
protected Long id;
@NotEmpty
protected String nombres;
@NotEmpty
protected String apellidos;
@NotEmpty
protected String tipoDocumento;
@NotEmpty
protected String numeroDocumento;
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar fechaNacimiento;
@NotEmpty
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar fechaVinculacion;
@NotEmpty
protected String cargo;
@NotEmpty
protected Double salario;
/**
* Gets the value of the apellidos property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getApellidos() {
return apellidos;
}
/**
* Sets the value of the apellidos property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setApellidos(String value) {
this.apellidos = value;
}
/**
* Gets the value of the cargo property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCargo() {
return cargo;
}
/**
* Sets the value of the cargo property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCargo(String value) {
this.cargo = value;
}
/**
* Gets the value of the fechaNacimiento property.
*
* @return
* possible object is
* {@link XMLGregorianCalendar }
*
*/
public XMLGregorianCalendar getFechaNacimiento() {
return fechaNacimiento;
}
/**
* Sets the value of the fechaNacimiento property.
*
* @param value
* allowed object is
* {@link XMLGregorianCalendar }
*
*/
public void setFechaNacimiento(XMLGregorianCalendar value) {
this.fechaNacimiento = value;
}
/**
* Gets the value of the fechaVinculacion property.
*
* @return
* possible object is
* {@link XMLGregorianCalendar }
*
*/
public XMLGregorianCalendar getFechaVinculacion() {
return fechaVinculacion;
}
/**
* Sets the value of the fechaVinculacion property.
*
* @param value
* allowed object is
* {@link XMLGregorianCalendar }
*
*/
public void setFechaVinculacion(XMLGregorianCalendar value) {
this.fechaVinculacion = value;
}
/**
* Gets the value of the id property.
*
* @return
* possible object is
* {@link Long }
*
*/
public Long getId() {
return id;
}
/**
* Sets the value of the id property.
*
* @param value
* allowed object is
* {@link Long }
*
*/
public void setId(Long value) {
this.id = value;
}
/**
* Gets the value of the nombres property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getNombres() {
return nombres;
}
/**
* Sets the value of the nombres property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setNombres(String value) {
this.nombres = value;
}
/**
* Gets the value of the numeroDocumento property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getNumeroDocumento() {
return numeroDocumento;
}
/**
* Sets the value of the numeroDocumento property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setNumeroDocumento(String value) {
this.numeroDocumento = value;
}
/**
* Gets the value of the salario property.
*
* @return
* possible object is
* {@link String }
*
*/
public Double getSalario() {
return salario;
}
/**
* Sets the value of the salario property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setSalario(Double value) {
this.salario = value;
}
/**
* Gets the value of the tipoDocumento property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTipoDocumento() {
return tipoDocumento;
}
/**
* Sets the value of the tipoDocumento property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTipoDocumento(String value) {
this.tipoDocumento = value;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Empleado1 [id=");
builder.append(id);
builder.append(", \nnombres=");
builder.append(nombres);
builder.append(", \napellidos=");
builder.append(apellidos);
builder.append(", \ntipoDocumento=");
builder.append(tipoDocumento);
builder.append(", \nnumeroDocumento=");
builder.append(numeroDocumento);
builder.append(", \nfechaNacimiento=");
builder.append(fechaNacimiento);
builder.append(", \nfechaVinculacion=");
builder.append(fechaVinculacion);
builder.append(", \ncargo=");
builder.append(cargo);
builder.append(", \nsalario=");
builder.append(salario);
builder.append("]");
return builder.toString();
}
}
IWebService
接口
package org.bz.soap.client.service;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.Action;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.3.2
* Generated source version: 2.2
*
*/
@WebService(name = "IWebService", targetNamespace = "http://ws.soap.bz.org/")
@XmlSeeAlso({
ObjectFactory.class
})
public interface IWebService {
/**
*
* @param arg0
*/
@WebMethod
@RequestWrapper(localName = "create", targetNamespace = "http://ws.soap.bz.org/", className = "org.bz.soap.client.service.Create")
@ResponseWrapper(localName = "createResponse", targetNamespace = "http://ws.soap.bz.org/", className = "org.bz.soap.client.service.CreateResponse")
@Action(input = "http://ws.soap.bz.org/IWebService/createRequest", output = "http://ws.soap.bz.org/IWebService/createResponse")
public void create(
@WebParam(name = "arg0", targetNamespace = "")
Empleado1 arg0);
}
WebServiceImplService
实现。
package org.bz.soap.client.service;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.WebServiceFeature;
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.3.2
* Generated source version: 2.2
*
*/
@WebServiceClient(name = "WebServiceImplService", targetNamespace = "http://ws.soap.bz.org/", wsdlLocation = "http://localhost:8080/WebServiceImplService/WebServiceImpl?wsdl")
public class WebServiceImplService
extends Service
{
private final static URL WEBSERVICEIMPLSERVICE_WSDL_LOCATION;
private final static WebServiceException WEBSERVICEIMPLSERVICE_EXCEPTION;
private final static QName WEBSERVICEIMPLSERVICE_QNAME = new QName("http://ws.soap.bz.org/", "WebServiceImplService");
static {
URL url = null;
WebServiceException e = null;
try {
url = new URL("http://localhost:8080/WebServiceImplService/WebServiceImpl?wsdl");
} catch (MalformedURLException ex) {
e = new WebServiceException(ex);
}
WEBSERVICEIMPLSERVICE_WSDL_LOCATION = url;
WEBSERVICEIMPLSERVICE_EXCEPTION = e;
}
public WebServiceImplService() {
super(__getWsdlLocation(), WEBSERVICEIMPLSERVICE_QNAME);
}
public WebServiceImplService(WebServiceFeature... features) {
super(__getWsdlLocation(), WEBSERVICEIMPLSERVICE_QNAME, features);
}
public WebServiceImplService(URL wsdlLocation) {
super(wsdlLocation, WEBSERVICEIMPLSERVICE_QNAME);
}
public WebServiceImplService(URL wsdlLocation, WebServiceFeature... features) {
super(wsdlLocation, WEBSERVICEIMPLSERVICE_QNAME, features);
}
public WebServiceImplService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
public WebServiceImplService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) {
super(wsdlLocation, serviceName, features);
}
/**
*
* @return
* returns IWebService
*/
@WebEndpoint(name = "WebServiceImplPort")
public IWebService getWebServiceImplPort() {
return super.getPort(new QName("http://ws.soap.bz.org/", "WebServiceImplPort"), IWebService.class);
}
/**
*
* @param features
* A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values.
* @return
* returns IWebService
*/
@WebEndpoint(name = "WebServiceImplPort")
public IWebService getWebServiceImplPort(WebServiceFeature... features) {
return super.getPort(new QName("http://ws.soap.bz.org/", "WebServiceImplPort"), IWebService.class, features);
}
private static URL __getWsdlLocation() {
if (WEBSERVICEIMPLSERVICE_EXCEPTION!= null) {
throw WEBSERVICEIMPLSERVICE_EXCEPTION;
}
return WEBSERVICEIMPLSERVICE_WSDL_LOCATION;
}
}
完整的pom.xml
,
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>org.bz</groupId>
<artifactId>rest-services</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>rest-services</name>
<description>Rest Test</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.jws/javax.jws-api -->
<dependency>
<groupId>javax.jws</groupId>
<artifactId>javax.jws-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<!-- <version>2.3.1</version> -->
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml.ws/jaxws-api -->
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<!-- <version>2.3.1</version> -->
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.main.appclient/gf-client -->
<!-- <dependency>
<groupId>org.glassfish.main.appclient</groupId>
<artifactId>gf-client</artifactId>
<version>5.0</version>
</dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/jaxws-maven-plugin -->
<!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId>
<version>2.6</version> <executions> <execution> <goals> <goal>wsimport</goal>
</goals> </execution> </executions> <configuration> <wsdlUrls> <wsdlUrl>http://localhost:8080/WebServiceImplService/WebServiceImpl?wsdl</wsdlUrl>
</wsdlUrls> <keep>true</keep> <packageName>org.bz.soap.client.service</packageName>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir> </configuration>
</plugin> -->
</plugins>
</build>
</project>
在http://localhost:8081/create中使用REST服务GET
我得到这样的输出:
empleado1:Empleado1 [id=null,
nombres=Fernando Ariel,
apellidos=Lopez Martinez,
tipoDocumento=CC,
numeroDocumento=99258732,
fechaNacimiento=1984-03-15T00:00:00.000Z,
fechaVinculacion=2020-09-21T00:00:00.000Z,
cargo=Constructor,
salario=6000000.0]
2020-09-19 16:50:45.509 ERROR 25376 --- [nio-8081-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/ws/Service] with root cause
java.lang.NoClassDefFoundError: javax/xml/ws/Service
at org.bz.rest.api.models.service.EmpleadoServiceImpl.guardarEmpleado(EmpleadoServiceImpl.java:13) ~[classes/:na]
at org.bz.rest.api.controllers.CustomerController.getCustomer(CustomerController.java:30) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.38.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.38.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]
为了使用来自RestController的SOAP服务,有什么建议吗?
而不是使用
<!-- https://mvnrepository.com/artifact/javax.xml.ws/jaxws-api -->
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<!-- <version>2.3.1</version>
</dependency>
或使用:
<!-- https://mvnrepository.com/artifact/javax.xml.ws/com.springsource.javax.xml.ws -->
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>com.springsource.javax.xml.ws</artifactId>
<version>2.1.1</version>
</dependency>
更好地使用(for me works with):
<!-- https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-rt -->
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.3</version>
</dependency>
问题内容: 我想像本例一样启用蓝牙。 但是,我的课程不是Activity,而是Service,因此我不能调用startActivityForResult。我怎么解决这个问题?。我知道还回答了其他问题,例如 使用非活动中的startActivityForResult 但这不能解决我的问题,因为我的应用程序由服务组成,而没有别的什么。 问题答案: 不幸的是你不能那样做。 我发现(破解)的唯一解决方案是
问题内容: 我正在尝试在收到C2DM消息时显示一个简单的通知。服务提供给UI,但仍在主线程上运行。我见过有人声称您可以通过服务创建和显示通知。 } 我不知道为什么会抛出该异常。 问题答案: 首先,引发异常是因为创建的通知没有引用该对象的视图对象(contentView属性设置为null)。您必须在显示通知之前调用setLatestEventInfo。 其次,不赞成使用您使用的构造函数。请使用Not
我已经创建了一个简单的窗口服务来使用来自Azure服务总线队列的消息。我使用TopShelch创建windows服务。下面的代码从这里剪切如下示例:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues 高频。Run(); ServiceBusHe
下面尝试过,但是直到并且除非我使Acyah geShipmentIn绑定节点为空(删除释放ID="9.2"xmlns="http://schema.infor.com/InforOAGIS/2"xmlns: xs="http://www.w3.org/2001/XMLSchema")选择查询不获取值。
我们最近将一些数据移植到MongoDB,现在正在考虑运行日常备份,最好是从cron作业,并将其中一个备份恢复到辅助mongo数据库。 我们的系统设置如下: 服务器1:开发mongo数据库 服务器2:两个mongo数据库,一个用于暂存数据,一个用于生产 服务器3:是我们运行所有cron作业/批处理脚本的地方 (我尝试了将用户名和密码连接到主机,但没有将用户名和密码连接到主机) 我收到以下信息: Mo
我正在尝试从我的一个微服务攻击外部服务。我使用Spring Cloud、Eureka注册表和Spring boot作为主框架。 在我看来,Spring Cloud将Ribbon作为Rest模板的HTTP客户端注入,当我尝试访问这个IP(例如:)时,它会产生以下错误: java.lang.IllegalStateException:在org.springframework.cloud.netflix