【问题标题】:Is there any way to list all web services in an application?有没有办法列出应用程序中的所有 Web 服务?
【发布时间】:2017-05-17 09:32:31
【问题描述】:

如何列出服务器上部署的所有 Web 服务?是否有任何用于列出相同的全局命令?

就像我的服务一样,我有以下共同点:

path="vms/CaseServices"
path="vms/ActivityServices"
path="vms/FileDownloadServices"

为了访问它们,我使用

http://localhost:8080/vms/CaseServices?wsdl

但是如何列出服务器上所有可用的 Web 服务,是否使用 Java 代码?

【问题讨论】:

  • 我敢打赌,根据服务器的不同,有一个 xml 包含 Servlet 路径、Filter 路径...和 ​​WebService,因此您可以读取该 XML 来获取所有的WS。现在,我不知道是不是真的,我应该在应用服务器上部署ear/war后检查映射是如何存储的
  • PS : 当然,如果你自己定义了web.xml 文件来创建映射,这会很容易做到,但是有了注解......这并不简单。

标签: java web-services tomcat glassfish mule


【解决方案1】:

在 Mule 中,您可以使用转换器来完成:

public class HttpPathsTransformer extends AbstractMessageTransformer {

    @Override
    public Object transformMessage(MuleMessage message, String encoding) throws TransformerException {
        StringBuilder sb = new StringBuilder("paths: ");
        Collection<DefaultHttpListener> listener = muleContext.getRegistry().lookupObjects(DefaultHttpListener.class);
        for (DefaultHttpListener l : listener) {
            logger.info("path: " + l.getPath());
            sb.append(System.lineSeparator()).append(l.getPath());
        }

        return sb.toString();
    }

}

记录路径并将它们作为字符串返回。

这些都是 http 路径,不仅仅是 Web 服务。

【讨论】:

  • 但是如何访问这个?
  • 在流中放置一个 JavaTransformer(not JavaComponent)并引用上面的类。
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多