EJB WebService(JAX-WS)的WSDL URL是什么?

3
据我理解,您可以引入以下内容:
@Stateless
@WebService
public class MyWebServiceEndpoint {

@Inject SomeBean aBean;

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

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

4个回答

0

我不能确定其他应用服务器,但对于WebLogic和EJB Web服务URL遵循以下默认模式:

http://host:port/'className'/'className'+Service

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

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

希望能有所帮助 :)


0

对于第一个答案/URL,只是给出一个提示:

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


0

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

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

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


-1

你需要发布它,你可以有一个类似这样的 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
但是:1)我没有注入EJB,所以我的服务类内部没有注入工作;2)这里的URL是什么?我的意思是我可以有任何想要的URL吗?如果我在不同服务器上有几个环境,那么URL对于所有环境都是相同的吗?我认为应该有一些自动化的方法。 - LaRRy
我这样做是为了在本地环境上进行测试,当我部署war文件时,服务器会为我完成吗?如果您只是像这样进行测试,那么可以直接发布。最终的想法是您将拥有war文件,并在任何想要的服务器上部署,对吗? - Eduardo Dennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接