- 浏览: 106812 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
lws0402:
sghys 写道附件根本没这代码代码都贴在网上了,很简单。附件 ...
jdk 1.5 搭建 jax-ws -
sghys:
附件根本没这代码
jdk 1.5 搭建 jax-ws -
dukunpeng22:
按照楼主的思路,也可以做一个文字的倒影效果,蛮不错的
ImageView倒影效果 -
yangpanwww:
哈哈。。原因不是你说的这个原因吧
在 tomc ...
Xfire调用webservice出错 -
mapeijie888:
貌似还是不行啊 兄弟贴代码出来看看
javah编译带包class文件出错解决方法
不带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:
然后打开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
此时把SOAPService.class拷贝到tomcat主目录的webapps下的soap/WEB-INF/classes下,注意包名,重启tomcat,运行SOAPClient.java文件,就应该可以看到打印出的远程返回的字符串“Hello! lws”。
带javaBean的SOAP调用
其本上大致相同,只是在远程调用类里要手动出则一下javaBean,部署soap的时候也需要添加用户自己的javaBean
SOAPService.java
在编写Person类,在相同的包(soap)下
打开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
运行该程序,会打印出person对象中name的值"name_1"
提醒:如果要运行在MyEcplise建立的web项目上,会出错。
因为用 MyEcplise创建web项目,会自动加入javaee.jar,这里面已经封装了javamail和activation,所以造成了冲突,只要用解压工具打开javaee.jar文件,把里面的mail和activation删了就可以正常的访问了。
首先,下载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
# package com.kt.test; # # import java.net.MalformedURLException; # import java.net.URL; # import java.util.Vector; # # import org.apache.soap.Constants; # import org.apache.soap.Fault; # import org.apache.soap.SOAPException; # import org.apache.soap.rpc.Call; # import org.apache.soap.rpc.Parameter; # import org.apache.soap.rpc.Response; # # public class SOAPClient # { # public static void main(String[] args) throws MalformedURLException, SOAPException # { # Call c = null; # URL url = null; # Vector params = null; # Response rep = null; # # //传入的参数名 # String ourName = "lws"; # # //部署soap时的唯一标示 # String ourUrn = "urn:HelloWorld_SOAPService"; # # //远程调用的方法 # String ourMethod = "sayHi"; # # //soap的url # url = new URL("http://localhost:8080/soap/servlet/rpcrouter"); # # System.out.println("Passing to our deployed " + ourUrn + " our name (" # + ourName + "): "); # # c = new Call(); # c.setTargetObjectURI(ourUrn); # c.setMethodName(ourMethod); # c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); # # //设置参数 # params = new Vector(); # params.addElement(new Parameter("name", String.class, ourName, null)); # # c.setParams(params); # # System.out.print("and its answer is: "); # # //Call的invoke返回org.apache.soap.rpc.Response # rep = c.invoke(url, ""); # # //rep.generatedFault()判断请求是否成功,不成功打印错误代码,请求成功就打印远程调用返回的值 # if (rep.generatedFault()) # { # Fault fault = rep.getFault(); # System.out.println("\nCall failed!"); # System.out.println("Code = " + fault.getFaultCode()); # System.out.println("String = " + fault.getFaultString()); # } else # { # Parameter result = rep.getReturnValue(); # System.out.print(result.getValue() + " === "); # System.out.println(); # } # } # }
此时把SOAPService.class拷贝到tomcat主目录的webapps下的soap/WEB-INF/classes下,注意包名,重启tomcat,运行SOAPClient.java文件,就应该可以看到打印出的远程返回的字符串“Hello! lws”。
带javaBean的SOAP调用
其本上大致相同,只是在远程调用类里要手动出则一下javaBean,部署soap的时候也需要添加用户自己的javaBean
SOAPService.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
# package soap; # # import java.net.URL; # import java.util.Vector; # # import org.apache.soap.Constants; # import org.apache.soap.Fault; # import org.apache.soap.encoding.SOAPMappingRegistry; # import org.apache.soap.encoding.soapenc.BeanSerializer; # import org.apache.soap.rpc.Call; # import org.apache.soap.rpc.Parameter; # import org.apache.soap.rpc.Response; # import org.apache.soap.util.xml.QName; # # public class SOAPClient # { # public static void main(String[] arg) throws Exception # { # Call c = null; # URL url = null; # Vector params = null; # Response rep = null; # String ourName = "lws"; # String ourUrn = "urn:HelloWorld_SOAPService"; # String ourMethod = "sayHi"; # url = new URL("http://localhost:8080/soap/servlet/rpcrouter"); # # System.out.println("Passing to our deployed " + ourUrn + " our name (" # + ourName + "): "); # # c = new Call(); # c.setTargetObjectURI(ourUrn); # c.setMethodName(ourMethod); # c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); # # // 创建类型映射注册器 # SOAPMappingRegistry smr = new SOAPMappingRegistry(); # BeanSerializer beanSer = new BeanSerializer(); # // 映射类型 # smr.mapTypes(Constants.NS_URI_SOAP_ENC, # new QName("urn:Person", "soap.Person"),soap.Person.class, beanSer, beanSer); # # c.setSOAPMappingRegistry(smr); # # params = new Vector(); # params.addElement(new Parameter("x", Person.class, new Person(), # null)); # c.setParams(params); # # System.out.print("and its answer is: "); # # rep = c.invoke(url, ""); # if (rep.generatedFault()) # { # Fault fault = rep.getFault(); # System.out.println("\nCall failed!"); # System.out.println("Code = " + fault.getFaultCode()); # System.out.println("String = " + fault.getFaultString()); # } else # { # Parameter result = rep.getReturnValue(); # Person entity = (Person)result.getValue(); # System.out.print( entity.getName()+ " === "); # } # } # }
运行该程序,会打印出person对象中name的值"name_1"
提醒:如果要运行在MyEcplise建立的web项目上,会出错。
因为用 MyEcplise创建web项目,会自动加入javaee.jar,这里面已经封装了javamail和activation,所以造成了冲突,只要用解压工具打开javaee.jar文件,把里面的mail和activation删了就可以正常的访问了。
发表评论
-
java生成不重复的用户邀请码
2016-05-26 11:00 7014直接上代码,根据一个值M(可以是用户唯一表示,如主键id,或手 ... -
terracotta + tomcat + nginx集群
2015-04-24 11:30 1323今天研究了一下terracotta + tomcat的集群,记 ... -
jdk 1.5 搭建 jax-ws
2013-09-26 11:30 4461从jdk1.6开始,可以直接搭建jax-ws,但是jdk1.5 ... -
找不到WEB-INF下的proxool.xml的问题
2011-05-12 15:09 2091在windows下部署正常的系统,移植到linux下,启动时报 ... -
applet
2011-03-24 16:45 1496在jsp页面使用applet时。总是报错——找不到类。 主要是 ... -
(转载)java单例模式的6种写法
2011-03-11 16:33 1801第一种(懒汉,线程不安全) public class Sing ... -
javah编译带包class文件出错解决方法
2011-01-04 11:04 2458用JNI时,需要把class文件编译成.h文件 不带包名的cl ... -
java获得字符串中的指定字符
2010-11-12 10:16 1623正则表达式除了匹配一串字符串是否符合某种格式,还能从文本中过滤 ... -
判断文件是否为图片文件
2010-08-30 11:32 4314判断文件是否为图片,仅通过后缀名判断很不全面,如果把一个txt ... -
Java动态调用方法
2010-05-26 11:52 21011public void function(String s ... -
java UDP传输
2010-05-26 11:47 1180TCP通过 ServerSocket 和 Socket 来实现 ... -
java UDP打印
2010-05-26 11:45 950采用UDP的通讯方式,调用java自带的awt打印接口 服务 ... -
基于prototype.js和spring的ajax分页
2010-05-26 11:42 1723这是一个基于prototype.js的ajax分页,运用了sp ... -
java过滤关键字
2010-05-26 11:29 3258KeywordFilter.java: 1. imp ... -
java ftp操作
2010-05-26 11:14 1670简单的写了个java对ftp的操作 用的是commons-n ... -
tomcat一闪而过启动失败
2010-05-26 11:11 14711、手动点击startup.bat受,一闪而过 在用文本打开 ...
相关推荐
孙卫琴《Tomcat与Java Web开发技术详解》培训讲义.rar 01__JavaWeb应用简介.pdf 02_Servlet技术.pdf 03_JSP...自定义客户化标签.pdf 08_开发Java Mail Web.pdf 09_Soap服务.pdf tomcat_chapter2.pdf
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Java Web Service 学习例子,里面有大量用来开发web services的Java程序示例,非常值得学习。 使用到的技术及工具如下: Apache: www.apache.org and xml.apache.org -- Ant 1.4.1 -- SOAP 2.2 -- Tomcat 3.2...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
Java Web 服务开发 计成超 内容概要 Java Web服务环境 简单的Web服务 Java处理XML SOAP JWSDP JAXM(Java API for XML Messaging)|SAAJ(SOAP with Attachement API for Java) Java Web服务环境 商业的 IBM Websphere,...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
三、 Java web 开发核心内容 1、 web 编程基础 ①Tomcat 服务器NOWCODER.COM 牛客网——互联网学习求职必备神器 名企校招历年笔试面试真题, 尽在牛客网 牛客网, 互联网人都在用的学习求职神器 ②JSP 语法, EL, ...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
SOAP WS-Addressing WS-Policy WS-ReliableMessaging WS-Security WS-SecurityPolicy WS-SecureConversation JAX-WS API,用于Web服务开发 WSDL优先工具 Java优先支持 JAX-RS (JSR 311 1.0) API,用于...