maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.1</version>
</dependency>
webservice config配置
package *;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.xml.ws.Endpoint;
@Configuration
public class WebServiceConfig {
@Autowired
private SmsService smsService;
@Autowired
private EmailService emailService;
@Value("${webservice.api.url}")
private String webserviceApiUrl;
@Value("${webservice.api.email}")
private String webserviceApiEmail;
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public ServletRegistrationBean dispatcherServlet2() {
return new ServletRegistrationBean(new CXFServlet(), "/services/*");
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), smsService);
endpoint.setPublishedEndpointUrl(webserviceApiUrl);
endpoint.publish("/ws/api");
return endpoint;
}
@Bean
public Endpoint mailEndpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), emailService);
endpoint.setPublishedEndpointUrl(webserviceApiEmail);
endpoint.publish("/ws/api/emailService");
return endpoint;
}
}
package *;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(name = "SmsService", targetNamespace = "http://sms.webservice.com")
public interface SmsService {
@WebMethod
String saveSmsInfo(@WebParam(name = "data", targetNamespace = "http://sms.webservice.com") String data);
}
package *;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(name = "EmailService", targetNamespace = "http://email.webservice.com")
public interface EmailService {
@WebMethod
String saveEmailInfo(@WebParam(name = "data", targetNamespace = "http://email.webservice.com") String data);
}
package *;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.jws.WebParam;
import javax.jws.WebService;
@Component
@WebService(name = "EmailService", targetNamespace = "http://email.webservice.com",
endpointInterface = "*.service.webservice.service.EmailService")
@Slf4j
public class EmailServiceImpl implements EmailService {
@Autowired
SmartMsgService smartMsgService;
@Override
public String saveEmailInfo(@WebParam(name = "data", targetNamespace = "http://email.webservice.com") String data) {
try {
log.info("\n【webservice 发送邮件消息开始】 data:{}",data);
if(StringUtils.isEmpty(data)){
throw new RuntimeException("内容不能为空");
}
JSONObject smsInfo = JSON.parseObject(data);
String msg_id = smartMsgService.sendWebserviceMail(smsInfo);
log.info("\n【webservice 发送邮件消息成功】 msg_id:{}",msg_id);
return ResultVO.builder().msg("发送成功").result(true).msg_id(msg_id).build().toJSONStr();
} catch (RuntimeException e) {
e.printStackTrace();
log.error("\n【webservice 发送邮件消息失败】 e:{}",e.getMessage());
return ResultVO.builder().msg(e.getMessage()).result(false).build().toJSONStr();
}
}
}
package *;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.jws.WebParam;
import javax.jws.WebService;
@Component
@WebService(name = "SmsService", targetNamespace = "http://sms.webservice.com",
endpointInterface = "*.service.webservice.service.SmsService")
@Slf4j
public class SmsServiceImpl implements SmsService {
@Autowired
SmartMsgService smartMsgService;
@Override
public String saveSmsInfo(@WebParam(name = "data", targetNamespace = "http://sms.webservice.com") String data) {
try {
log.info("\n【webservice 发送短信消息开始】 data:{}",data);
if(StringUtils.isEmpty(data)){
throw new RuntimeException("内容不能为空");
}
JSONObject smsInfo = JSON.parseObject(data);
String msg_id = smartMsgService.sendWebserviceSms(smsInfo);
log.info("\n【webservice 发送短信消息成功】 msg_id:{}",msg_id);
return ResultVO.builder().msg("发送成功").result(true).msg_id(msg_id).build().toJSONStr();
} catch (RuntimeException e) {
e.printStackTrace();
log.error("\n【webservice 发送短信消息失败】 e:{}",e.getMessage());
return ResultVO.builder().msg(e.getMessage()).result(false).build().toJSONStr();
}
}
}