我在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
文件之间的区别:
url-pattern
/
当我在myWebService上使用/*
时,它或者在localhost上不起作用。感谢帮助。如果需要,请随时询问更多信息(希望尽可能缩短问题)。
根据您的描述和代码,我试图成功地重现您的<url-pattern>/</url-pattern>
问题。访问myWebService
404
的http://myWebService.azurewebsites.net/myWebService
问题是由myWebService
与url-pattern
类的Method
网址不匹配引起的,请参阅下面的解释。
Sample
中,类注释Sample
和方法@Path("Sample")
的方法注释@Path("/")
意味着在Method
项目中类Method
的方法Sample
的可访问URL是myWebService
。http://myWebService.azurewebsites.net/myWebService/Sample/
值url-pattern
意味着只匹配网址/
。您的案例有两种解决方案。
http://myWebService.azurewebsites.net/myWebService/
而不是/*
用于/
并访问url url-pattern
。并建议将类注释http://myWebService.azurewebsites.net/myWebService/Sample/
更改为@Path("Sample")
以供阅读和理解。@Path("/Sample")
,则仅将类注释@Path("Sample")
更改为@Path("")
或@Path("/")
,但不会匹配其他类的任何路径注释。