clojure 调用web service

本来用asix调用...

但是比较纠结的是  在调用的时候有一个参数需要接口的class,

可是接口的打点class 在clojure是找不到的属性 无法使用

getClass class type . XXX class

这些都用了= =老是不对.

后来在一个地方看到个老外调用的...

也只是用的生成的方代码调用的

首先拿到wsdl.

然后用Java中带的一个wsimport 这个东西...

http://metro.java.net/nonav/1.3/docs/wsimport.html   这里有使用说明,看得懂的就去看看吧.

$JAVA_HOME/bin/wsimport -keep -p generated.test http://localhost:8080/services/HelloWorld?wsdl

java home 我就不用说了...找到这个东西...

-keep是生产源代码文件  也就是.java

-p 是输出到指定地方...不太确定= =哈哈

generated.test  这个就相当是包了~

后面的就是那个啥....

然后会在当前的地方生成一个文件夹 以generated\ test\ 一堆文件

然后到了用clj的时候

(ns org.ns.rpc.core)
(import
  '(generated.test HelloWorldService )
  )


(defn rpc-my-test[x]
  (let [service (HelloWorldService.)
        execute (. service getHelloWorld)]
    (. execute sayHelloWorldFrom x)))

(println (rpc-my-test "nimei"))

在那个test的包下 有3个文件  分别是一个以serviceName命名的interface 和一个带有service后缀的class

和你一个objectFactory 文件,其实interface和factory都不用只要用service那个就行了.

如果不同包下记得导入 不导入的话可以直接加包名.

其实更方便的是使用eclipse等工具生成client文件....反正调用就是这样了~~~

= =如果谁知道那个interface.class 在clojure中怎么用  请告诉我...

 

你可能感兴趣的:(Web,call,service,clojure)