我知道这似乎是一个愚蠢的问题,但我无法找到有关此问题的任何信息。 我有一个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将更改)
答案 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”),则可以选择以下几种方法:
检查传入的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文件的网址。