我有一个包含多个模块的Google App Engine项目,每个模块都用作微服务。每个模块都位于项目的根级别,并具有自己的web.xml文件。
我熟悉servlet规范的工作原理,并且可以将servlet映射到相对路径:
<servlet>
<servlet-name>accounts</servlet-name>
<servlet-class>com.myapp.accounts.DatastoreServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>accounts</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
但是,如果我在浏览器中使用任何指向我的Web应用程序的域,则会执行上面的servlet。我真正想要的是servlet只为子域启动:
https://accounts.myapp.com
而不是像其他一些领域:
https://users.myapp.com
有没有办法在web.xml文件中指定它?根据servlet 3.1规范:
空字符串(&#34;&#34;)是一个精确映射到的特殊URL模式 应用程序的上下文根,即表单的请求 http://host:port/ /。在这种情况下,路径信息是'/' servlet路径和上下文路径为空字符串(“”)。
但这并不表示对子域有任何支持。
答案 0 :(得分:0)
不支持映射到特定域,但如果您不喜欢它返回的相同效果,则可以使用request.getServerName()
并返回404。
请注意,在http
中,服务器名称在技术上是可选的(值在Host
标头中)。实际上,除非通过IP地址访问服务器(即:URL http://<ip address>
),否则始终会发送它。
答案 1 :(得分:0)