标签: webcontext

如何控制Spring Hateoas生成链接的Web上下文?

我们正在构建API并使用Spring RestControllers和Spring HATEOAS.
将war文件部署到容器并发出GET请求时http://localhost:8080/placesapi-packaged-war-1.0.0-SNAPSHOT/places,HATEOAS链接如下所示:

{
  "links" : [ {
    "rel" : "self",
    "href" : "http://localhost:8080/placesapi-packaged-war-1.0.0-SNAPSHOT/places",
    "lastModified" : "292269055-12-02T16:47:04Z"
  } ]
}
Run Code Online (Sandbox Code Playgroud)

在网络方面是,部署的应用程序(如:placesapi-packaged-war-1.0.0-SNAPSHOT)

在真实的运行时环境(UAT及更高版本)中,容器可能位于http服务器后面,例如Apache虚拟主机或类似的Web应用程序.像这样的东西:

<VirtualHost Nathans-MacBook-Pro.local>
   ServerName Nathans-MacBook-Pro.local

   <Proxy *>
     AddDefaultCharset Off
     Order deny,allow
     Allow from all
   </Proxy>

   ProxyPass / ajp://localhost:8009/placesapi-packaged-war-1.0.0-SNAPSHOT/
   ProxyPassReverse / ajp://localhost:8009/placesapi-packaged-war-1.0.0-SNAPSHOT/

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

使用上面的内容,当我们发出GET请求时http://nathans-macbook-pro.local/places,结果响应如下所示:

{
  "links": [ {
    "rel": "self",
    "href": "http://nathans-macbook-pro.local/placesapi-packaged-war-1.0.0-SNAPSHOT/places",
    "lastModified": "292269055-12-02T16:47:04Z"
  } ]
}
Run Code Online (Sandbox Code Playgroud)

这是错误的,因为响应中的链接包含Web应用程序上下文,如果客户端要关注该链接,他们将获得404

有谁知道如何控制Spring HATEOAS这方面的行为?基本上我需要能够控制它在链接中生成的Web上下文名称.

我做了一些调整,可以看到使用自定义标头,X-Forwarded-Host您可以控制主机和端口,但我看不到任何类似的能够控制上下文.

我们考虑的其他选项涉及将应用程序部署到ROOT上下文或固定的命名上下文,然后相应地设置我们的虚拟主机.然而,这些感觉就像妥协而不是解决方案,因为理想情况下我们希望在同一容器上托管应用程序的多个版本(例如:placesapi-packaged-war-1.0.0-RELEASE,placesapi-packaged-war-1.0.1- RELEASE,placesapi-packaged-war-2.0.0-RELEASE等)并根据http请求标头将虚拟主机转发到正确的应用程序. …

spring webcontext spring-hateoas

12
推荐指数
1
解决办法
2816
查看次数

Eclipse中的Wildfly正在将Maven SNAPSHOT添加到Web上下文中

当我们在eclipse中移动到Wildfly 8.x服务器时,我遇到了一个新问题.

我的项目名为PayloadSvc.pom.xml的第一部分如下所示:

<modelVersion>4.0.0</modelVersion>
<groupId>PayloadSvc</groupId>
<artifactId>PayloadSvc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
Run Code Online (Sandbox Code Playgroud)

后来在pom我有这个:

<build>
    <finalName>PayloadSvc</finalName>
Run Code Online (Sandbox Code Playgroud)

在eclipse中,我还在Web项目设置中将我的上下文根设置为PayloadSvc

但是,当它部署到Wildfly时,它会以这种方式部署:

Registered web context: /PayloadSvc-0.0.1-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

我似乎无法删除Web上下文的"-0.0.1-SNAPSHOT"部分.

奇怪的是,即使使用相同的pom数据(具有适当的上下文,groupId,工件ID和当然相同的版本属性),同一工作区中的其他项目也能正常工作.

我正在使用Eclipse Neon的STS版本.

感谢您提出的任何建议.

eclipse snapshot maven webcontext wildfly

7
推荐指数
3
解决办法
2816
查看次数

不同部署环境的默认servlet映射

我们希望在Tomcat,WebLogic,WebSphere和JBoss上部署我们的应用程序.我们的应用程序的web.xml需要包含到默认servlet的映射.

对于Tomcat,这个servlet被命名为"default",因此我们的映射将显示为:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/js/calendar/flexcal.html</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

但在其他平台上它会发生变化(即WebLogic是"FileServlet").

有没有办法定义一个条件映射,它将根据可用的内容而改变?如果不是,我们应该如何处理这个问题?

谢谢!

tomcat servlets weblogic web-applications webcontext

1
推荐指数
1
解决办法
2518
查看次数