什么基于JVM的脚本语言支持@WebService在运行时创建服务?

时间:2012-08-20 08:37:52

标签: java web-services scripting jvm jsr223

我处于需要能够在运行时创建和公开Web服务的情况。 (即没有“javac” - 编译步骤)。

是否有基于JVM的脚本语言对JAX-WS有很好的支持,因此我可以用Java编写中央引擎,然后让脚本语言创建包含Web服务方法的片段(使用@WebService或@WebMethod注释)然后可以传递给

http://docs.oracle.com/javase/6/docs/api/javax/xml/ws/Endpoint.html#publish(java.lang.String, java.lang.Object)

如果可能,请提供一个如何正确执行此操作的示例。

有什么建议吗?

1 个答案:

答案 0 :(得分:10)

许多人都这样做,那个最像Java并且支持你想要的东西可能会很常见。

更新以添加示例:

通过谷歌搜索有很多可用的。我所知道的最好的是here,因为这会引导您完成一个有效的示例。这个链接是另一个专注于groovy的问答网站。他们将向您介绍这个简单的例子:

如果您尝试使用此网站并发现它没有指导意义,请在此处提供反馈。同样,如果你搜索并找到一个你发现更好/更容易理解的,请在此处添加。我不能从同样的角度来看待你,因此你会有更多的东西在我这方面做出贡献。

Geom.groovy
-------------------
package webservices

import javax.jws.WebService
import javax.jws.soap.SOAPBinding.Style
import javax.jws.soap.SOAPBinding

@WebService
@SOAPBinding(style=Style.RPC)
interface Geom {
    double getArea(double val)
}

Circle.groovy
-------------------
package webservices

import javax.jws.WebService

@WebService(endpointInterface='webservices.Geom')
class Circle implements Geom {
        double getArea(double r) { Math.PI*r*r }
}

publish.groovy
--------------------
package webservices

import javax.xml.ws.Endpoint

Endpoint.publish('http://localhost:5555/circle',new Circle())
println 'ready to receive requests...'

我提供的链接最终可能会中断或被删除。然而(IMO),如果(当?)技术向更新/更好的方向发展,这很可能发生。虽然我从上面复制了代码,但引用还有其他非常有用的信息和指针(例如使用SoapUI)。

相关问题