不带javaBean的SOAP调用
首先,下载soap.war,javamail.jar,activation.jar,soap.jar,xerces.jar,然后就是配置环境,如何配置就不细说了。
把soap.war扔到tomcat的webapps下,启动tomcat,访问http://127.0.0.1:8080/soap,出现Hello! Welcome to Apache-SOAP. 就说明环境搭建好了。
首先建立个java项目,包名叫soap,类名叫SOAPService,这个就是要远程调用的类
SOAPService.java:
# package soap;
#
# public class SOAPService
# {
# public Person sayHi(String name)
# {
# return "Hello! " + name;
# }
# }
然后打开soap的管理页面,http://127.0.0.1:8080/soap/admin
在管理页面点击“Deploy”按钮,配置部署这个类,填写基本信息如下:
ID urn:HelloWorld_SOAPService
Scope Application
Provider Type java
Provider Class soap.SOAPService
Use Static Class no
Methods sayHi
配置好后,编写soap的调用类SOAPClient
SOAPClient.java
1. package soap;
2.
3. public class SOAPService
4. {
5. public Person sayHi(Person person)
6. {
7. person.setName("name_1");
8. return person;
9. }
10. }
在编写Person类,在相同的包(soap)下
# package soap;
#
# public class Person
# {
# private String name;
#
# public String getName()
# {
# return name;
# }
#
# public void setName(String name)
# {
# this.name = name;
# }
# }
打开http://127.0.0.1:8080/soap/admin配置该soap类,信息如下:
ID urn:HelloWorld_SOAPService
Scope Application
Provider Type java
Provider Class soap.SOAPService
Use Static Class no
Methods sayHi
这是还需要配置javaBean,在Number of Mappings输入框输入1,它表示我们将给出一个映射(即Name JavaBean)的信息。紧接Mappings之下有一个表格,我们要用到这个表格的第一行。保留Encoding Style的值为SOAP,把NameSpace URI设置成对象的ID:在本例中,它是urn:Person。接下来,把Local Part和Java Type输入框设置成Name JavaBean的完整名字,即soap.Person。最后,把Java to XML Serializer和XML to Java Deserializer输入框设置成org.apache.soap.encoding.soapenc.BeanSerializer,这是一个实现了Serializer和Deserializer接口的类,用来串行化和反串行化Name JavaBean。如果你用到了更多的JavaBean(比如还有一个Address Bean),则应该在这个表格中输入其他Bean的信息,同时还应该更新Number of Mappings输入框的值,使之反映出表格中实际被使用的行数。
在SOAP调用程序中需要手工注册javaBean,完整代码如下;
SOAPClient.java