Какой язык на основе JVM-скриптов поддерживает @WebService для создания служб во время выполнения?

Я нахожусь в ситуации, когда мне нужно создать и выставить веб-сервис во время выполнения. (т.е. нет шага "javac" -compilation).

Есть ли на языке JVM скриптовый язык, который имеет хорошую поддержку JAX-WS, поэтому я могу написать центральный движок в Java, а затем просто позволить скриптовому языку создавать фрагменты, содержащие методы веб-службы (с помощью @WebService или @WebMethod), которые затем можно передать в

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

Если это вообще возможно, предоставьте пример того, как это сделать правильно.

Любые предложения?

Ответы

Ответ 1

Многие делают, тот, который является наиболее похожим на Java и поддерживает то, что вы хотите, вероятно, будет groovy.

Обновить, чтобы добавить пример:

Их можно найти с помощью поиска в Google. Самый лучший, о котором я знаю, здесь, так как это должно пройти вас через пример, который работает. Эта ссылка относится к другому сайту вопросов/ответов, посвященному 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...'

Предоставленная ссылка может в конечном итоге сломаться или быть удалена. Однако (ИМО) это, скорее всего, произойдет, если (когда?) Технология движется вперед к чему-то более новому/лучшему. Хотя я дублировал код выше, ссылка имеет другую очень полезную информацию и указатели (например, использование SoapUI).