spring boot框架,基于JWS的webservice实例

来源:互联网 发布:携程 知乎 亲子园 编辑:程序博客网 时间:2024/06/06 19:14

webservice接口分为两部分:一个是服务端提供服务,另一个是客户端调用服务,我们往往写的是服务端;

server

首先是程序入口application.java

@SpringBootApplicationpublic class Application {    @Value("${server.baseAddress}")    private String baseAddress;    @Bean    public SimpleJaxWsServiceExporter simpleJaxWsServiceExporter(){        SimpleJaxWsServiceExporter simpleJaxWsServiceExporter=new SimpleJaxWsServiceExporter();        simpleJaxWsServiceExporter.setBaseAddress(baseAddress);        return simpleJaxWsServiceExporter;    }    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

然后,定义服务接口及包含的方法,DataService .java

@WebService(targetNamespace = "http://www.freedom.cn/dataService/", serviceName = "dataService")@BindingType(SOAPBinding.SOAP12HTTP_BINDING)public interface DataService {    /**     * 1.1推送信息     * @param json{"studentId":"3102","studentName":"张三"}     */    String pushStudentInfo(String json);    /**     * 1.2获取信息     * @param json {"studentId":"3102"}     */    String getStudentInfo(String id);}

接口实现:DataServiceImpl.java

@Component@WebService(endpointInterface = "cn.freedom.DataService")public class DataServiceImpl implements DataService {    @Autowired    private JdbcTemplate jdbcTemplate;    @Override    String pushStudentInfo(String json) {        if (StringUtils.isNotBlank(json)) {            JSONObject jsonObject = JSONObject.parseObject(json);            String id = jsonObject.getString("studentId");            String name = jsonObject.getString("studentName");            List<Map<Stirng, Object>> students = jdbcTemplate.queryForList("select * from student where id = ?", id);            if(students.isEmpty()) {                jdbcTemplate.update("insert student(id, name) values (?,?)", id, name);            }else {                jdbcTemplate.update("update student set name = ? where id = ?", name, id);            }            return "finished!";        }else {            return "args wrong!";        }    }    @Override    public String getStudentInfo(String json) {        if(StringUtils.inNotBlank(json)) {            JSONObject jsonObject = JSONObject.parseObject(json);            String id = jsonObject.getString("studentId");            List<Map<String, Object>> students = jdbcTemplate.queryForList("select * from student where id = ?", id);            if(students.isEmpty()) {                return "this student doesn't exist!";            }else {                return JsonUtils.mapToJosn(students.get(0));            }        }else {            return "the args shoudn't be empty!";        }    }}

之后,配置文件application.properties

server.baseAddress=http://0.0.0.0:9091/spring.datasource.url = jdbc:sqlserver://127.0.0.1;databaseName=HISDBspring.datasource.username = saspring.datasource.password = 123456spring.datasource.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver#HTTPserver.port=8081

启动程序,application started! 访问http://localhost:9091/?wsdl可以访问xml,就发布成功了!

client

接下来,客户端调用服务。首先,用wsimport命令:wsimport -keep -d c:\ -p com.freedom http://localhost:9091/?wsdl将服务导入本地;

未完待续~~

原创粉丝点击