【问题标题】:What is URL of WSDL of EJB WebService (JAX-WS)?EJB WebService (JAX-WS) 的 WSDL 的 URL 是什么?
【发布时间】:2014-08-05 16:53:38
【问题描述】:

据我了解,可以介绍一下:

@Stateless
@WebService
public class MyWebServiceEndpoint {

@Inject SomeBean aBean;

  @WebMethod
  public String getSomething() {
     return "something";
  }
}

在部署应用程序时,WebService 会在应用程序服务器(例如 WebSphere)中公开。那么WSDL的URL是什么,其他应用可以在哪里找到我的服务呢?

【问题讨论】:

    标签: java web-services wsdl ejb jax-ws


    【解决方案1】:

    您在服务器上的 WSDL 的 URL 应采用以下格式:

    http://hostname:port/contextRoot/MyWebServiceEndpoint?WSDL
    

    但这是在您的 sun-jaxws.xml 文件中 endpoint 实体的 url-pattern 属性使用与您的 Web 服务类相同的名称的假设下运行的。

    【讨论】:

      【解决方案2】:

      只是对第一个答案/URL 的提示,

      在某些情况下,“上下文根”会在部署后从 Web 服务 url 中排除。

      【讨论】:

        【解决方案3】:

        我不能说其他应用程序服务器,但 WebLogic 和 EJB Web 服务 URL 遵循以下默认模式:

        http://host:port/'className'/'className'+服务

        其中 'className' 是实现 Web 服务的 Java 类的简单名称。

        您可以通过在 @WebService 注释中设置 serviceName 属性来轻松覆盖 URL 的结尾。如果您需要更改根上下文,则必须将 Web 服务打包为嵌入在 EAR 中的 EJB jar,并使用 WebLogic 特定的部署描述符(我会不惜一切代价避免)。

        希望对你有帮助:)

        【讨论】:

          【解决方案4】:

          你需要发布它,你可以有一个这样的 Publisher 类:

           import javax.xml.ws.Endpoint;
          
          //Endpoint publisher
          public class Publisher {
          
              public static void main(String[] args) {
          
           Endpoint.publish("http://localhost:9999/webserv/Test", new FilenetWebService());
          
              }
          }
          

          【讨论】:

          • 但是:1)我没有注入 EJB,所以在我的服务类中没有注入工作; 2) 这里的 URL 是什么?我的意思是我可以有任何我想要的网址吗?如果我在不同的服务器上有多个环境,那么它们的 URL 是否都相同?我认为应该有一些自动的方法。
          • 我这样做是为了在我的本地环境中进行测试,当我部署 war 文件时,服务器会为我做这件事吗?如果您只是像这样进行测试,则可以以这种方式发布。最后的想法是你将拥有war文件文件并部署在你想要正确的任何服务器上?
          猜你喜欢
          • 2011-03-28
          • 2017-01-03
          • 2015-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多