欢迎阅读『webservice之cxf方式发布,jax-ws方式调用』
斑驳。
codeing or artist ?
posts - 37,comments - 8,views - 11万

1.CXF方式发布

  MAVEN方式引入cxf相关jar包

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>apache-cxf</artifactId>
            <version>3.0.2</version>
            <type>pom</type>
        </dependency>

  以下测试代码仅供参考,发布目录

  

cxf方式发布:

复制代码
package com.newangels.er.test;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

/**
 * @author mwd
 * @date 2020/11/24
 */
public class App {
    public static void main(String[] args) {
        //启动方式1  此方式接口实现必须添加注解 @WebService @WebMethod等
//        System.out.println( "Hello World!" );
//        HelloServiceImpl implementor = new HelloServiceImpl();
//        String address = "http://localhost:8080/ws/" + HelloService.class.getSimpleName();
//        Endpoint.publish(address, implementor);

        //启动方式2 此方式接口实现不需要添加注解
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(HelloService.class);
        // 发布接口
        factory.setAddress("http://10.18.26.30:8080/ws/" + HelloService.class.getSimpleName());
        factory.setServiceBean(new HelloServiceImpl());
        factory.create();
        //发布多个接口,多定义几个factory即可

    }
}
复制代码
HelloService:
复制代码
package com.newangels.er.test;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import java.util.List;

/**
 * @author mwd
 * @date 2020/11/24
 */
@WebService(targetNamespace="http://test.er.newangels.com/", name = "HelloService")
public interface HelloService {
    @WebMethod(action = "http://test.er.newangels.com/say")
    @WebResult(name = "return", targetNamespace = "")
    public Long say(@WebParam(name = "name", targetNamespace="http://test.er.newangels.com/") String name);

    @WebMethod(action = "http://test.er.newangels.com/sayHello")
    public String sayHello(@WebParam(name = "user111", targetNamespace="http://test.er.newangels.com/") User user);

    @WebMethod(action = "http://test.er.newangels.com/getList")
    public List<User> getList(@WebParam(name = "id", targetNamespace="http://test.er.newangels.com/") String id);

    @WebMethod(action = "http://test.er.newangels.com/getListT")
    public String getListT(@WebParam(name = "user", targetNamespace="http://test.er.newangels.com/") User user);

    @WebMethod(action = "http://test.er.newangels.com/getListTQ")
    public String getListTQ(@WebParam(name = "userList", targetNamespace="http://test.er.newangels.com/") User userList);
}
View Code
复制代码

HelloServiceImpl:
复制代码
package com.newangels.er.test;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import java.util.ArrayList;
import java.util.List;

/**
 * @author mwd
 * @date 2020/11/24
 */
@WebService(targetNamespace="http://test.er.newangels.com/")
public class HelloServiceImpl implements HelloService {
    @WebMethod
    public Long say(@WebParam(name = "name") String name) {
        return 2352L;
    }

    @WebMethod
    public String sayHello(@WebParam(name = "user111") User user) {
        return user.getName() + ",您好!";
    }

    @WebMethod
    public List<User> getList(@WebParam(name = "id") String id) {
        List<User> list = new ArrayList<User>();
        User user = new User();
        String sid = "1";
        user.setId(sid);
        user.setName("张三" + sid);
        list.add(user);

        user = new User();
        sid = "2";
        user.setId(sid);
        user.setName("张三" + sid);
        list.add(user);

        return list;
    }

    @WebMethod
    public String getListT(@WebParam(name = "user") User user) {
        return user.getName() + "tttt";
    }

    @WebMethod
    public String getListTQ(@WebParam(name = "userList") User userList) {
        return userList.getUsert().get(0).getId() + "ListUser";
    }
}
View Code
复制代码

 User:

复制代码
package com.newangels.er.test;

import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author mwd
 * @date 2020/11/24
 */
@XmlRootElement(name = "User")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "User")
public class User {
    @XmlElement(nillable = true)
    private String id;

    @XmlElement(nillable = true)
    private String name;

    @XmlElement(nillable = true)
    private int age;

    @XmlElement(nillable = true)
    public List<Usert> usert;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<Usert> getUsert() {
        if (usert == null) {
            usert = new ArrayList<Usert>();
        }
        return this.usert;
    }
}
View Code
复制代码
Usert:
复制代码
package com.newangels.er.test;

import javax.xml.bind.annotation.*;

/**
 * @author mwd
 * @date 2020/11/24
 */
@XmlRootElement(name = "Usert")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Usert")
public class Usert {
    @XmlElement(nillable = true)
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }


}
View Code
复制代码

发布成功效果图:

 

 2.jax-ws方式调用

拿到wsdl文件,这里使用IntelliJ IDEA开发工具,把wsdl解析还原webService发布的文件;目的:jax-ws方式调用时,要用到发布的接口和实体类;

IntelliJ IDEA开发工具操作:

选择项目右键

 

 其它干掉,目前只需要这三个文件

jax-ws调用webService

复制代码
//test demo
        URL wsdlURL = new URL("http://10.18.26.30:8080/ws/HelloService?wsdl");
        QName qname = new QName("http://test.er.newangels.com/", "HelloServiceService");
        javax.xml.ws.Service service = javax.xml.ws.Service.create(wsdlURL, qname);
        HelloService hs = service.getPort(HelloService.class);
        User user = new User();
        List<Usert> usertList = user.getUsert();
        Usert usert = new Usert();
        usert.setId("qwer,");
        usertList.add(usert);
        System.out.println(hs.getListTQ(user));
复制代码

 

posted on   斑驳。  阅读(532)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示