java - Spring Boot 服务在本地工作但不在远程

标签 java spring tomcat nlp spring-boot

我正在尝试使用 Spring Boot 创建一个非常简单的 RESTful Web 服务,以对作为参数传递的内容执行 NLP。你可以在我的 GitHub 上找到它.

出于某种原因,我无法将它作为 WAR (see here) 部署到我的家庭服务器中的 Tomcat 容器中,因此我决定至少尝试将它设置为可运行的 JAR。

如果我通过调用在我的开发机器上运行它:

java -jar -Xss32M -Xmx8G -XX:+UseG1GC -XX:+UseStringDeduplication ClearWS-0.1.0.jar

它就像一个魅力。如果我将浏览器指向 http://localhost:8888/process?content=This%20is%20a%20test. ,我得到了预期的 JSON:

{ "id": 1,
  "sentences": [
      { "start": 0,
        "end": 0,
        "content": "This is a test.",
        "tokens": [
          { "start": 0, "end": 4, "index": 0, "text": "This", "posTag": "DT", "chunkTag": "NP", "lemma": "this" },
          { "start": 5, "end": 7, "index": 1, "text": "is", "posTag": "VBZ", "chunkTag": "VP", "lemma": "be" },
          { "start": 8, "end": 9, "index": 2, "text": "a", "posTag": "DT", "chunkTag": "NP", "lemma": "a" },
          { "start": 10, "end": 14, "index": 3, "text": "test", "posTag": "NN", "chunkTag": "NP", "lemma": "test" },
          {"start": 14, "end": 15, "index": 4, "text": ".", "posTag": ".", "chunkTag": ".", "lemma": "." } ],
        "size": 5 
      } ]
}

现在,我已将 ClearWS-0.1.0.jar 文件移动到我的家庭服务器,并在那里使用与上述相同的命令启动它:没有错误消息。在本地(通过 localhost:8888),一切仍然完美运行。但是,如果我尝试远程使用它,它就不起作用:一段时间后,浏览器告诉我连接尝试失败。

那台家庭服务器机器有一个不经常更改的 NATed 地址,所以我可以使用 no-ip.com 连接它并访问它。请注意,部署到 Tomcat 容器的其他 J2EE 服务完全可以远程访问和使用。我认为可能是嵌入式Tomcat与单机冲突,所以我将后者关闭但仍然无法访问ClearWS-0.1.0

我开始认为 Spring 了解我仍然不完全信任它,所以它故意让我失败......开个玩笑,任何对 Spring 和网络有更好了解的人都可以帮助我解决这个问题?提前致谢。


解决方案:我只是忘了转发端口 8888... 将该配置添加到我的路由器后,我就可以远程使用该服务了。现在我希望能够将它部署到我现有的 Tomcat 容器中……有什么想法吗?

最佳答案

如果真的要部署到tomcat容器,需要创建war文件as specified in the Spring Boot documentation .它主要涉及将 maven 包装设置为 war 。如果你的tomcat容器是6.0以下,你需要写一个web.xml,否则你需要提供一个SpringBootServletInitializer

就我个人而言,这些天在容器中运行没有任何好处。现在 Java 世界的运动是嵌入式 servlet 容器,这使得它更容易在云端或像 docker 这样的容器中运行。

关于java - Spring Boot 服务在本地工作但不在远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058040/

相关文章:

java - ISO-8859-15 中的 Tomcat 无法写入带有拉丁字符的文件名

java - 没有 if 和 switch 的条件语句

java - 无法直接调用 TextToSpeech 实例的 speak()

java - Autowiring 字段上的 PMD 异常 BeanMembersShouldSerialize

tomcat - Apache shiro - 我怎么知道缓存正在为授权工作?

security - 如何将 Tomcat 的 context.xml 中的属性注入(inject)到 Seam 组件中?

java - 如何保护/加密您的 Java 类?

java - 如何使用 wicket ajax 请求处理 session 超时?

java - OAuth2 spring 示例闪光和色调

spring - 未定义名为 springSecurityFilterChain 的 bean