如何找到我的Web服务的URL?

时间:2011-02-03 22:44:36

标签: java url service

我知道这似乎是一个愚蠢的问题,但我无法找到有关此问题的任何信息。 我有一个java Web服务(使用NetBeans生成),在Web服务类中,我想知道部署Web服务的URL。 例如,如果我在本地glassFish服务器上部署Web服务,则Web服务位于“http:// localhost:8080 / MyService /”,其中“MyService”是我的服务名称。 我需要知道此URL的原因是因为我的Web服务生成了一些我需要在此URL上提供的文件。例如,Web服务调用返回URL“http:// localhost:8080 / MyService / report.html” 我找到了一些关于“WebServiceContext”的链接,但是我无法获得运行我的Web服务的URL。

被修改

澄清:在MyWebService.java类中,我想找出部署我的Web服务的URL(在这种情况下,我的Web服务运行在“http:// localhost:8080 / MyService /”,但是一旦将其部署在生产服务器上,此URL将更改)

5 个答案:

答案 0 :(得分:8)

我认为更容易,例如:

@GET
public URI redirectSendMail(@Context UriInfo ui) {
  return ui.getBaseUri();
}

如果我们想将一个String发送回客户端,指出某些资源的确切路径,我们可能需要这样的东西。

@GET
public String getResourcePath(@Context UriInfo ui) {
  return ui.getAbsolutePath();
}

答案 1 :(得分:4)

如果您在询问如何查找servlet容器正在侦听的主机名(例如“localhost”或“www.example.com”),则可以选择以下几种方法:

  • 添加在部署时设置的配置点(例如,配置文件,系统属性)
  • 查看您的servlet容器是否通过JMX公开任何“虚拟主机”配置或读取其配置文件(例如tomcat hosts
  • 查找服务器的IP地址并执行DNS查找以获取其配置的主机名
  • 检查传入的HttpServletRequest的“主机”标头

    String hostname = request.getRequestHeader("Host");

答案 2 :(得分:2)

希望我能够帮到你,我刚刚开始使用webservices(Jersey REST),我发现你的端点的url是: 的 'http://本地主机:8080 /为MyService / XXX / YYY'
其中XXX = web.xml文件中servlet映射中的URL模式(例如下面的文件)

<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>   

,YYY是您的webservice的@Path()参数定义的路径,因此在本例中,它将类似于:

'http:// localhost:8080 / MyService / rest / myPathDefinition'

另外需要注意的是,您实际上可以在eclipse中更改Web上下文根,但它将默认为您的Java项目的名称。如果您需要进一步澄清,或者如果这没有帮助/有人可以扩展它,请告诉我。

答案 3 :(得分:1)

在webservice类中添加以下属性。

@Resource    
private WebServiceContext wsCtxt;

现在,下面的代码段会为您提供所需的值:

    MessageContext msgCtxt = wsCtxt.getMessageContext();
    HttpServletRequest request =
        (HttpServletRequest)msgCtxt.get(MessageContext.SERVLET_REQUEST);

    String hostName = request .getServerName();
    int port = request .getServerPort();

要检查调用webservice的位置,请使用以下代码。

    String clientIP = request .getRemoteAddr();

相关进口如下:

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;

import weblogic.jws.Context;

import weblogic.wsee.jws.JwsContext;

答案 4 :(得分:0)

可以在你的wsdl文件中找到:

因此:http://localhost:8080/TestSOAPWebservice/services/TestClassImpl?wsdl将是您的wsdl文件的网址。