First they ignore you
then they ridicule you
then they fight you
then you win
    -- Mahatma Gandhi
Chinese => English     英文 => 中文             
随笔-143  评论-742  文章-0  trackbacks-0
看了YanHua同学的《 用JRuby轻松搞定SOAP消息 》,也手痒了,那我就用Groovy来实现一个吧:)

0,下载jar包:http://dist.codehaus.org/groovy/jars/groovysoap-all-1.0-0.3-snapshot_jdk1.5.0.jar,
    并将其放置于<groovy_home>/lib目录中。


1,定义Hello类如下(保存为Hello.groovy,并放在classpath中,使Groovy能够找到该类):
class  Hello {  
    String hello(String name){  
        
return   " hello, "   +  name 
    }  
}

2,启动SoapServer:
import  groovy.net.soap.SoapServer

def server 
=   new  SoapServer( " localhost " 2007 )

server.setNode(
" Hello " )

server.start()

3,创建SoapClient,并调用相关服务:
import  groovy.net.soap.SoapClient

def proxy 
=   new  SoapClient( " http://localhost:2007/HelloInterface?wsdl " )

println proxy.hello(
" Daniel " )

结果如下所示:

hello,Daniel


附:朝花夕拾——Groovy & Grails

posted on 2007-06-15 19:58 山风小子 阅读(1239) 评论(5)  编辑  收藏 所属分类: Groovy & Grails

评论:
# re: Groovy高效编程——用Groovy轻松搞定SOAP消息 2007-08-06 15:54 | 远离尘嚣
我晕,这么简单啊?比php的nusoap实现的web service还容易!顶了!  回复  更多评论
  
# re: Groovy高效编程——用Groovy轻松搞定SOAP消息 2007-08-06 21:53 | 山风小子
@远离尘嚣
嗯,就是这么简单 :)  回复  更多评论
  
# re: Groovy高效编程——用Groovy轻松搞定SOAP消息 2007-08-15 01:39 | 远离尘嚣
测试不能执行,情况如下:
在eclipse下,编辑后编译未报错,作为groovy应用执行SoapServer.goorvy,出错:
Exception in thread "main" groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.airtoy.groovy.soap.SoapServer(java.lang.String, java.lang.Integer)
at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:855)
at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:767)
at org.codehaus.groovy.runtime.Invoker.invokeConstructorOf(Invoker.java:173)
at org.codehaus.groovy.runtime.InvokerHelper.invokeConstructorOf(InvokerHelper.java:144)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeNewN(ScriptBytecodeAdapter.java:243)
at com.airtoy.groovy.soap.SoapServer.run(SoapServer.groovy:5)
...
在命令行下执行,亦报类似错误:
-mingguidediannao:/Volumes/win/project/grails-prj/GrailsTest zhangminggui$ java -cp $GROOVY_HOME/lib/groovy-1.1-beta-2.jar:$GROOVY_HOME/lib/commons-cli-1.0.jar:$GROOVY_HOME/lib/asm-2.2.jar:$GROOVY_HOME/lib/antlr-2.7.6.jar:$GROOVY_HOME/lib/groovysoap-all-1.0-0.3-snapshot_jdk1.5.0.jar groovy.lang.GroovyShell src/groovy/com/airtoy/groovy/soap/SoapServer.groovy
Caught: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.airtoy.groovy.soap.SoapServer(java.lang.String, java.lang.Integer)
at com.airtoy.groovy.soap.SoapServer.run(SoapServer.groovy:5)
at com.airtoy.groovy.soap.SoapServer.main(SoapServer.groovy)
看信息,好像是SoapServer类的构造器参数传入有误,但在eclipse编译通过,有点不解,暂时没去看groovy saop包的API,请山风看看先.  回复  更多评论
  
# re: Groovy高效编程——用Groovy轻松搞定SOAP消息 2007-08-16 18:24 | 远离尘嚣
C:\Documents and Settings\jacky_zhang>java -cp D:\develop\grails-0.5.6\lib\commons-lang-2.1.jar;D:\dev
elop\groovy-1.1-BETA-1\lib\antlr-2.7.6.jar;D:\develop\groovy-1.1-BETA-1\lib\commons-cli-1.0.jar;D:\dev
elop\groovy-1.1-BETA-1\lib\asm-2.2.jar;D:\develop\groovy-1.1-BETA-1\lib\groovy-1.1-BETA-1.jar;D:\devel
op\groovy-1.1-BETA-1\lib\commons-lang-1.0.jar org.codehaus.groovy.tools.GroovyStarter --main groovy.ui
.GroovyMain --classpath "D:\develop\grails-0.5.6\lib\commons-lang-2.1.jar;D:\develop\groovy-1.1-BETA-1
\lib\commons-lang-1.0.jar" -e " import org.apache.commons.lang.WordUtils;class Greeter {def name;Greet
er(who) { name = WordUtils.capitalize(who) };def salute() { println 'Hello ' + name; }};new Greeter('w
orld').salute();"
Hello World
终于把groovy的添加lib包到classpath用熟了!先暂存一下,方便以后查阅  回复  更多评论
  
# re: Groovy高效编程——用Groovy轻松搞定SOAP消息[未登录] 2008-03-18 16:32 | fatbear
http://dist.codehaus.org/groovy/jars/groovysoap-all-jsr06-0.1.jar
我下载的是这个包
为何运行服务端的时候有如下异常(jdk1.4,5.0下均试过了):
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, script1205828849140.groovy: 1: unexpected token: . @ line 1, column 13.
1 error  回复  更多评论
  



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-06-16 12:49 编辑过