【问题标题】:Support for starting, stopping my apache camel application (using spring) jar支持启动、停止我的 apache camel 应用程序(使用 spring)jar
【发布时间】:2013-12-08 03:08:52
【问题描述】:

我正在开发一个使用骆驼、spring DSL 并通过 maven 打包为 jar 的应用程序。在我的本地机器上,我可以使用 maven camel:run 启动应用程序。

但我不确定这是否应该在类似测试/产品的环境中使用。 对于这样的环境,我也应该有支持启动/停止应用程序。

我在其他地方读到有不同的部署/运行选项可用 - http://java.dzone.com/articles/apache-camel-deployment-modes

有人可以建议启动使用spring应用程序上下文的骆驼应用程序(jar)的最佳方法是什么?如果它类似于拥有一个加载 spring 上下文的主类,我可以添加什么支持来允许在应用程序上调用关闭?

【问题讨论】:

    标签: spring apache-camel


    【解决方案1】:

    动态启动和停止路线的方法很少。 camel-spring 中提供了一个名为 Main 的类,可以管理您的 XML 路由 (http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html)。您可以实现一个服务来监视新 XML 文件的目录,并在每次将文件放在那里时启动路由。为此,您可以使用 Java 7 中提供的新 WatchService 或使用 Apache Commons VFS2。

    您还可以使用 Apache Karaf 使用 OSGi 方法,该方法提供了开箱即用的路由管理功能 (http://camel.apache.org/karaf.html)。但是,如果您不了解 OSGi,这种方法的学习曲线可能会更大。

    【讨论】:

      【解决方案2】:

      您可以使用 maven-shade-plugin 构建可执行 jar。主要课程是 hveiga 提到的课程。根据操作系统的不同,有几种方法可以将 Java 进程作为服务/守护进程运行。在 linux 上,我们通过 init.d 脚本对 java 进程进行 nohup,在 Windows 上,我们使用 java service wrapper

      着色器插件的一个缺点是您需要管理如何解决各个 jar 中资源的名称冲突。这是适合我们的配置:

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>1.5</version>
          <configuration>
              <transformers>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                      <mainClass>org.apache.camel.spring.Main</mainClass>
                  </transformer>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                      <resource>META-INF/spring.handlers</resource>
                  </transformer>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                      <resource>META-INF/spring.schemas</resource>
                  </transformer>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                      <resource>META-INF/spring.tooling</resource>
                  </transformer>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                      <resource>META-INF/cxf/bus-extensions.txt</resource>
                  </transformer>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                      <resource>META-INF/INDEX.LIST</resource>
                  </transformer>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                      <resource>META-INF/MSFTSIG.SF</resource>
                  </transformer>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                      <resource>META-INF/MSFTSIG.RSA</resource>
                  </transformer>
              </transformers>
          </configuration>
          <executions>
              <execution>
                  <phase>package</phase>
                  <goals>
                      <goal>shade</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 2022-12-23
        • 2020-04-11
        • 1970-01-01
        • 2021-08-18
        • 2020-06-30
        相关资源
        最近更新 更多