Java 如何将子域映射到servlet

Java 如何将子域映射到servlet,java,servlets,Java,Servlets,我有一个GoogleAppEngine项目,它由多个模块组成,每个模块都作为一个微服务。每个模块都位于项目的根级别,并有自己的web.xml文件 我熟悉servlet规范的工作原理,可以将servlet映射到相对路径: <servlet> <servlet-name>accounts</servlet-name> <servlet-class>com.myapp.accounts.DatastoreServlet</servl

我有一个GoogleAppEngine项目,它由多个模块组成,每个模块都作为一个微服务。每个模块都位于项目的根级别,并有自己的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>
而不适用于其他领域,如:

https://users.myapp.com
有没有办法在web.xml文件中指定这一点?根据servlet 3.1规范:

空字符串(“”)是一种特殊的URL模式,它精确地映射到 应用程序的上下文根,即表单的请求 /。在本例中,路径信息为“/” servlet路径和上下文路径为空字符串(“”)


但这并不表示对子域的任何支持。

不支持映射到特定域,但如果您不喜欢它返回的相同效果,可以使用
request.getServerName()
并返回404


请注意,在
http
中,服务器名称在技术上是可选的(该值位于
主机
头中)。实际上,除非通过IP地址访问服务器(即:URL
http://
),否则它始终会被发送 并检入DB,按子域映射结果。

事实上,当在谷歌的应用程序引擎上使用子域时,当涉及到https时,您不必担心IP地址。这是因为子域必须使用--dot--格式,而不是使用“.”将子域与主机分离。这允许GAE创建一个SSL证书来覆盖所有子域。至于IP地址,这是GAE透明处理的。你是对的-我没有想到通配符证书-删除了https备注(无论如何这是半OT)虽然可以在GAE中使用自定义域创建子域,但这仍然不会影响servlet的激活方式。我正在寻找某种机制,使GAE将传入子域映射到特定的servlet。我刚刚遇到的解决方案是使用调度文件:但不清楚servlet规范是否有它自己的功能n内置支持。@AndroidDev:更新了我在GAE中使用的映射,我使用了通配符*.domain.com,然后通过子域请求映射。
https://users.myapp.com