5

我正在尝试通过 JAX-WS 注释公开 Web 服务方法。我见过的许多示例都引用了 EndPoint.publish() 方法来在独立应用程序中快速建立服务(例如来自 Java Web Services:Up and Running, 1st Edition):

public class TimeServerPublisher {
public static void main(String[ ] args) {
  // 1st argument is the publication URL
  // 2nd argument is an SIB instance
  Endpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl());
}

}

我缺少的一件事是如何在现有应用程序中完成基本相同的事情。我会做一个servlet来处理这个吗?在现有 WAR 文件中发布此服务的正确方法是什么?

4

3 回答 3

4

在容器中,您不必像这样发布。容器将进行发布。如果您打算在 JBoss 服务器中使用它,请尝试 JBossWS,否则对于 Tomcat 或任何其他服务器 Axis2 可能是更好的选择。

从以下链接了解更多信息。

http://jbossws.jboss.org/mediawiki/index.php?title=JBossWS

http://ws.apache.org/axis2/

于 2009-04-10T18:18:05.140 回答
3

这取决于您使用的 WS 堆栈。

如果您使用的是包含JAX-WS 参考实现的 Java 6 ,那么您可以查阅有关 JAX-WS RI WAR 内容的文档

于 2009-04-10T18:35:02.900 回答
1

正如@Jerrish 和@andri 评论的那样,有不同的方法和解决方案,具体取决于您的关注点。

背后的想法是您不需要设置配置(端口等)何时发布您的 Web 服务。最好的方法是通过配置文件(XML、属性等)或使用@Annotations 来设置它。

例如,如果您习惯使用 Guice 或 Spring 之类的框架,您就会知道/建议启动应用程序的上下文发布或初始化一些对象、工厂、数据源等,而发布 Web 服务是另一项任务在这段时间内完成,因为当您启动应用程序时将可用,不是吗?

顺便说一句,我在 CXF 方面有很好的经验,另一个解决方案可能是Spring Web Services,另一个强大的创建 Web 服务的解决方案。

于 2011-09-12T23:34:00.510 回答