在Azure Tomcat上部署Java Web应用程序和Web服务的区别

问题描述 投票:1回答:1

我在Azure Tomcat servlet容器上部署时遇到问题。我通过FTP将qazxsw poi文件复制到正确的文件夹,从而连接到创建的Web应用程序空间。

myWebApp

我已经在Azure上成功部署了一个Spring MVC简单Web应用程序。 URL模式如下,两者都按预期工作:

  • war部署在Azure Tomcat上
  • http://myWebApp.azurewebsites.net/myWebApp部署在本地Tomcat上

密钥文件是下面的http://localhost:8080/myWebApp

web.xml

为MyWebService

好吧,当我想以相同的方式部署一个简单的Web服务并查看其内容时,问题就出现了。

我决定使用<web-app ... xsd schemas ... > <display-name>myWebApp</display-name> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param>... not important ...</context-param> <listener>... not important ...</listener> </web-app> 库。这是唯一的示例类:

jersey

@Path("Sample") public class Sample { @GET @Path("/") @Produces(MediaType.TEXT_XML) public String Method() { return "<tag>" + 123 + "</tag>"; } } 之后并在URL clean install上的本地Tomcat服务器上运行,它正确地给了我XML http://localhost:8080/myWebService/Sample

我希望像以前的myWebApp一样在Azure上部署,并尝试在URL <tag>123</tag>"上运行。它反而给了我http://myWebService.azurewebsites.net/myWebService错误,说请求的资源不可用。

这是404肯定:

web.xml

我错过了什么,我做错了什么?我注意到<web-app ... xsd schemas ... > <display-name>myWebService</display-name> <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>nch.webservices</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 中两个web.xml文件之间的区别:

  • myWebApp使用url-pattern
  • myWebService使用/

当我在myWebService上使用/*时,它或者在localhost上不起作用。感谢帮助。如果需要,请随时询问更多信息(希望尽可能缩短问题)。

java spring azure tomcat azure-webapps
1个回答
1
投票

根据您的描述和代码,我试图成功地重现您的<url-pattern>/</url-pattern>问题。访问myWebService 404http://myWebService.azurewebsites.net/myWebService问题是由myWebServiceurl-pattern类的Method网址不匹配引起的,请参阅下面的解释。

  1. 在类Sample中,类注释Sample和方法@Path("Sample")的方法注释@Path("/")意味着在Method项目中类Method的方法Sample的可访问URL是myWebService
  2. http://myWebService.azurewebsites.net/myWebService/Sample/url-pattern意味着只匹配网址/

您的案例有两种解决方案。

  1. 推荐的。使用通配符http://myWebService.azurewebsites.net/myWebService/而不是/*用于/并访问url url-pattern。并建议将类注释http://myWebService.azurewebsites.net/myWebService/Sample/更改为@Path("Sample")以供阅读和理解。
  2. 如果不更改@Path("/Sample"),则仅将类注释@Path("Sample")更改为@Path("")@Path("/"),但不会匹配其他类的任何路径注释。
© www.soinside.com 2019 - 2024. All rights reserved.