简单创建webservice接口并采用rpc方式调用

简单创建webservice接口并采用rpc方式调用

一、简单创建webservice接口

1.新建一个maven项目 image

2.创建一个包 image

3.创建一个接口

在新建的包下创建接口

点击查看代码
public interface FirstWebService {

    String getInfo(String text1, String text2, String text3);
}

4.创建实现类和实现方法

这里简单写一个实现方法,比如把三个传入的参数拼接起来再返回

点击查看代码
//表示该实现类就是webservice服务
@WebService(name = "firstWebService")
public class FirstWebServiceImpl implements FirstWebService {
    public String getInfo(String text1, String text2, String text3) {
        return text1 + text2 + text3;
    }
}

5.发布服务

点击查看代码
//发布服务
public class PublicServerTest {

    public static void main(String[] args) {
        //参数1:服务被访问的url ip+端口号+服务名
		//参数2:开放接口的实现类对象
        Endpoint.publish("http://localhost:9099/getAddress", new FirstWebServiceImpl());
        System.out.println("public success");
    }
}

6.运行

image

运行成功,以后可以查看webservice接口的wsdl说明文档
在浏览器中输入代码中设置好的服务的url
image
在访问url后面加上?wsdl可以访问查看该webservice接口的wsdl说明文档
image
在这个文档里可以查看命名空间和方法名称

二、采用rpc方式调用webservice接口

1.新建一个包

我这里新建一个com.webservice.test包

2.在pom文件里加入如下依赖

点击查看代码
<dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>1.7.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>1.7.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-spring</artifactId>
            <version>1.7.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-adb</artifactId>
            <version>1.7.8</version>
        </dependency>

3.新建一个类,写如下主函数

点击查看代码
public class webserviceRpcTest {

    public static void main(String[] args) throws AxisFault {
        /** 调用webser中nextNum方法 **/

        //第一步 创建RPCServiceClient对象
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        //第二步 输入url
        EndpointReference target = new EndpointReference(
                "http://localhost:9099/getInfo");
        options.setTo(target);
        //第三步 命名空间和方法
        QName addEntry = new QName("http://webservicetest/", "getInfo");
        //第四步 传入方法的参数,没有的话定义空数组
        Object[] addEntryArgs = new Object[]{"I", "am", "fine"};
        //第五步 方法的返回值,可以不存在
        Class[] classes = new Class[] {String.class};
        //第六步 调用接口
        Object[] invokeBlocking = serviceClient.invokeBlocking(addEntry, addEntryArgs, classes);

        System.out.println(invokeBlocking[0].toString());
    }
}

4.运行结果

image
成功输出

posted @ 2022-12-15 16:49  TidalCoast  阅读(365)  评论(0编辑  收藏  举报