小编eva*_*dor的帖子

在jenkins上持续部署基于OSGi的应用程序

花了几个小时,试图了解如何使后持续部署的工作在的情况下,基于OSGi的应用程序,我终于摆在我的计算器的第一个问题,希望对我可能做错了或漏掉某些适应症-不知何故我觉得自己走错了路......

这就是我想要实现的目标:

  1. 构建一些bundle并将它们安装到maven存储库(这里没问题,使用bnd)

  2. 现在让所有捆绑包组成我的应用程序(通过所有测试等),我想部署并运行应用程序,即使用这些捆绑包启动一些OSGi框架.

  3. 开始不是问题 - "mvn pax:provision -Dframework = equinox"可以解决问题.我的应用程序启动jetty,因此很容易通过浏览器验证看起来是否正常(除了所有测试)

  4. 但是,现在,尝试"连续",下次我想应用此过程时,我真的应该确保首先关闭我的应用程序的运行实例(至少释放正在使用的端口).所以,为了重新运行一切,我不得不首先关闭旧安装.

这就是我的问题开始的地方:有什么能帮我解决这个问题吗?我知道有maven-deploy-plugin,但这在将一些WAR/EAR文件部署到某个标准应用程序容器中时似乎很有用(似乎不需要重新启动它).

我真的只需要运行一些脚本来启动 OSGi环境 - 然后,下次再将它关闭,然后再重新启动它.使用tomcat,jetty,jboss等,有一些shutdown.sh脚本或mvn jetty:停止指令,但我真的必须自己写这些脚本吗?这是我认为我开始走错路的地方,有人必须在我面前遇到这些问题并解决它们我猜;)

我知道我可以以某种方式尝试使用JMX或使用telnet控制台访问正在运行的实例以发出"stop 0"命令,但这感觉不对.

从jenkins开始的进程应该编译/构建/部署项目,但是我猜不会启动长时间运行的线程,所以我不得不启动一些"外部"进程,我想在下次再次尝试时先杀死它.

有任何想法吗?也许我错过了什么?提前感谢您对此的任何意见!

osgi continuous-deployment pax-runner jenkins bnd

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

在akka http路由列表上调用reduce会产生编译错误(参数连接没有隐式值)

鉴于以下路线

val route1: PathMatcher[Unit] = PathMatcher("app")
val route2: PathMatcher1[String] = PathMatchers.Segment
val route3: PathMatcher[Unit] = PathMatcher("lastSegment")
Run Code Online (Sandbox Code Playgroud)

我可以轻松定义

val resultingRoute: PathMatcher[Tuple1[String]] = route1 / route2 / route3
Run Code Online (Sandbox Code Playgroud)

获得预期的类型(PathMatcher [Tuple [String]]).

但是以编程方式创建路线

val routeDef = List(route1, route2, route3)
val resultingRoute = routeDef.reduce((a,b) => a / b)
Run Code Online (Sandbox Code Playgroud)

不会编译,给我

找不到参数连接的隐含值:akka.http.scaladsl.server.util.TupleOps.Join [_1,_1]

此外,推断出的resultRoute类型是

PathMatcher[_ >: Unit with Tuple1[String] with join.Out]
Run Code Online (Sandbox Code Playgroud)

我真的很感激有任何提示给我一些迹象,说明我在这里做错了什么,或者如何解决这个问题.

为了完整性,这是我的导入:

import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.{PathMatcher, _}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

functional-programming scala implicit akka akka-http

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