繁体   English   中英

Java Web服务SOAP

[英]java web service SOAP

我有一个问题:创建您自己的SOAP Web服务,该服务将保存有关人的信息(例如,在地图中)。 每个人都有以下属性:名字,姓氏,出生日期。 您的Web服务将响应一个查询,该查询将根据以下信息过滤存储的条目:姓氏,出生日期。 根据提供的样本,创建一个JUnit测试以验证您的SOAP Web服务是否按预期工作。

然后我在Eclipse中创建了Dynamic Web Project,并编写了以下类:

public class Person {
    String firstName, surname, birthDate;
    public Person(String firstName, String surname, String birthDate) {
        this.firstName = firstName;
        this.surname = surname;
        this.birthDate = birthDate;
    }
}

和搜索:

public class Search {
    ArrayList<Person> people = new ArrayList<Person>();
    public Search() {
        Person jim = new Person("Jim", "Abacki","01/01/1990");
        Person scott = new Person("Scott","Babacki", "01/01/1990");
        Person anna = new Person("Anna","Cabacki", "01/01/1991");
        Person dan = new Person("Dan","Dabacki", "01/01/1992");
        Person ola = new Person("Ola","Fabacki", "01/01/1993");
        Person eva = new Person("Eva","Fabacki", "01/01/1991");

        people.add(jim);
        people.add(scott);
        people.add(anna);
        people.add(dan);
        people.add(ola);
        people.add(eva);
    }

    public String[] searchBySurname(String surname){

        int i =0;
        for(Person x : people){
            if(x.surname==surname){
                i++;
            }
        }
        String[] result = new String[i];
        int a=0;
        for(Person x : people){

            if(x.surname==surname){
                result[a]=x.firstName+ " "+ x.surname + " "+ x.birthDate;
                a++;
            }
        }
        return result;
    }


    public String[] searchByBirthDate(String birthDate){
        int i =0;
        for(Person x : people){
            if(x.surname==birthDate){
                i++;
            }
        }
        String[] result = new String[i];
        int a=0;
        for(Person x : people){

            if(x.surname==birthDate){
                result[a]=x.firstName + " "+ x.surname + " "+ x.birthDate;
                a++;
            }
        }
        return result;
    }

}

然后,通过单击类Search-> Web Services-> Create new Web Service添加新的Web Service(在属性中,我选择Axis2和Tomcat Server)。 然后我和班级的人做了类似的事情。

我以为一切正常,因此我向Web服务客户端添加了Search,然后尝试添加Person Web Service,但是发生了错误:WSDL的代码生成过程中发生了异常:org.apache.axis2.AxisFault:在中找不到操作portType元素。

而且,当我尝试调用以下操作时:

SearchStub a = new SearchStub();
a.searchBySurname(...);

Eclipse代替了点给我这样的建议:

a.searchBySurname(SearchBySurname searchBySurname2);

这对我来说也很奇怪,因为此函数作为参数应该接受String。

这是我的问题:我在做什么错? 您能帮我解决这个问题吗? 也许有人提供了很好的教程,因为我在Internet上找到的内容无济于事。

如果不首先生成有效的WSDL,则无法调用服务。 根据您的错误,Eclipse认为您缺少一种操作(方法)。 发生这种情况是因为您的Person类没有任何方法。 因此,没有操作。

幸运的是,对于它的设置方式,您无需遍历并基于Person生成WSDL。 但是,您的Search类使用Person,并且WSDL应该可以毫无问题地生成。 这是您唯一需要的WSDL。


现在,对于您的searchBySurname方法,根据您的现有情况,这似乎并不正常。 我的想法(我从这里调试):(a)您的Search源看起来不错,因此WSDL应该不错。 (b)客户的产生??? (c)当您的WSDL指定String时,该方法需要一个SearchBySurname对象,因此Client生成一定不好。 因此,它告诉您采用SearchBySurname对象而不是String。

(*)查看本教程: http : //www.java2blog.com/2013/03/web-service-tutorial.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM