问题标签 [ops4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ConversionPattern 在 JBossFuse / Apache Camel (ops4j) 中记录主机名
使用 JBoss Fuse / Apache Camel,写入配置的日志文件org.ops4j.pax.logging.properties
,我想记录主机名。
转换模式中的部分${host}
不起作用。
有没有办法让我得到这个?有没有类似的东西%X{host.name}
?
在我读到的代码中HOSTNAMENONCANON
——也许我可以访问它?
日志框架是OPS4j
,虽然模式看起来与 log4j 相似,但我不确定它们是否以相同的方式工作,或者确实可以通过 log4j 记录主机名的方式在这里也可以工作(但可能值得一试)。
谢谢,维京史蒂夫。
logging - 使用 PAX 日志记录时如何摆脱控制台中的日志记录启动消息?
我被要求在我们的 RCP 应用程序上实现 PAX 日志记录。基本上,我已按照本 教程进行操作。
正如您可能注意到的,它说当“您运行 RCP 应用程序时,您应该看到 Pax ConfMan 将输出记录到您的控制台”。请注意:可以找到配置文件夹,这不是问题。
当我运行我的应用程序时,我得到以下控制台输出:
我的问题是:我怎样才能摆脱这个控制台输出?
编辑 1 问这个问题的原因是理想情况下,我们不应该在启动时在控制台中看到任何东西,除非存在真正的问题,或者我们特别要求额外的日志记录。
编辑 2 我注意到我们有一个 apache commons 日志依赖项。我认为它会导致某种冲突,所以我删除了它,但输出没有改变。
编辑 3 问题仍然存在,目前正在等待任何反馈。
如果我在问题格式上犯了任何错误,请提前感谢您并道歉。
java - 使用 karaf + Ops4j jdbc + apache DBCP 时如何设置验证查询?
我在这里按照教程:http ://www.liquid-reality.de/display/liquid/2012/01/13/Apache+Karaf+Tutorial+Part+6+-+Database+Access解释了如何设置使用由 Ops4J JDBC 包装的 apache DBCP 在 Karaf 中创建数据源。
您可以使用“pool”属性前缀在基础对象池上设置属性,但我看不到设置“validationQuery”属性,可能是因为这不是基础池的属性,而是 BasicDataSource 本身。我需要设置此属性,因为我在开发服务器上遇到连接超时,这有时会破坏我们的夜间集成测试。
这可以做到吗?
jetty - 在 karaf 中使用码头提供静态文件(在捆绑包之外)
我们正在努力解决从文件系统中的某个位置但在 Web 应用程序之外提供静态文件的简单问题,但我们无法让它运行。
有很多关于如何做到这一点的例子,但它们似乎都不起作用,到目前为止,我们无法从某人那里找到它确实有效的确认。
在 etc 目录中找到的 jetty.xml 已被编辑,如此处所述 https://ops4j1.jira.com/wiki/display/paxweb/Advanced+Jetty+Configuration 或此处 ops4j GitHub 示例
所以添加到 jetty.xml 这个:
或这个:
使用这两个版本的 jetty / karaf 启动正常,当 karaf 关闭时,我可以看到
2015-06-02 12:02:57,838 | 信息 | 池 7 线程 2 | 上下文处理程序
| 113 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 停止 oejsServletContextHandler{/fileserver,file:/Users/Shared/testenv/}
但是文件不在 localhost:8181/fileserver 下提供
它工作的唯一方法(在新安装的 karaf 容器中)是使用
但是这样做会破坏在 karaf 中运行的其他 Web 应用程序。例如,我们正在使用 Camel Servlet 组件。
那么是否有人通过karaf中的码头实例提供静态文件的工作配置,或者现在如何做到这一点?
任何帮助表示赞赏。预先感谢!
顺便说一句:使用 Karaf 3.0.3
编辑:
我使用 Achim 给出的代码片段重新运行测试并启用 DEBUG 登录。
2015-06-03 15:33:25,492 | 调试 | 池 6 线程 1 | XML配置 | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | XML oejshContextHandler{/,null}.setContextPath(/static-content) 2015-06-03 15:33:25,527 | 调试 | 池 6 线程 1 | XML配置 | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | XML oejshContextHandler{/static-content,null}.setHandler(org.eclipse.jetty.server.handler.ResourceHandler@3855ace4) 2015-06-03 15:33:25,529 | 调试 | 池 6 线程 1 | 集装箱
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 容器 oejshContextHandler{/static-content,null} + org.eclipse.jetty.server.handler.ResourceHandler@3855ace4 作为处理程序 2015-06-03 15:33:25,529 | 调试 | 池 6 线程 1 | 容器
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 容器 org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection@6665534e + oejshContextHandler{/static-content,null} 作为处理程序 2015-06-03 15:33:25,542 | 调试 | 池 6 线程 1 | 抽象生命周期
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 开始 oejshContextHandler{/static-content,null} 2015-06-03 15:33:25,542 | 调试 | 池 6 线程 1 | 抽象处理程序
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 开始 oejshContextHandler{/static-content,null} 2015-06-03 15:33:25,543 | 调试 | 池 6 线程 1 | 抽象生命周期
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 开始 oejshContextHandler{/static-content,null} 2015-06-03 15:34:27,974 | 调试 | /静态内容 | 服务器
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 在 AsyncHttpConnection@638f2d20,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-5,l=10,c=0 上请求 /static-content },r=1 2015-06-03 15:34:27,974 | 调试 | /静态内容 | 服务器型号
| 78 - org.ops4j.pax.web.pax-web-spi - 3.1.4 | 匹配 [/static-content]... 2015-06-03 15:34:27,975 | 调试 | /静态内容 | 服务器型号 | 78 - org.ops4j.pax.web.pax-web-spi - 3.1.4 | 路径 [/static-content] 不匹配任何上下文 2015-06-03 15:34:27,975 | 调试 | /静态内容 | 服务器 | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 响应/静态内容 200 处理=假
在这里,我注意到获取版本(不工作)和设置版本(工作)之间的区别。
Set 设置类org.eclipse.jetty.server.handler.HandlerList
Get 获取并添加到类org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection
中,描述为
在执行基于子字符串的请求路径与注册别名的匹配之后,仅调用与请求路径匹配的处理程序 (=context) 的 Jetty 处理程序集合
别名可能有问题吗?
编辑2:
我试图深入研究这个,但我真的无法让它工作。我不知道集成测试和常规 karaf 之间的区别,但肯定有问题。要重现此问题,只需使用一个新的 karaf (3.0.3) 容器,feature:install war
然后将代码段添加到 etc/jetty.xml,使其看起来像这样,然后编辑 resourceBase 的路径,使其与本地路径匹配。
尝试使用 localhost:8181/static-content 通过浏览器访问上下文。
结果始终为 404 - 未找到。
我们已经在多个运行 linux 和 windows 的系统上进行了尝试。
logging - JBoss FUSE 中的 Pax 日志记录
我对 OSGi 很陌生,我目前正在研究的一件事是登录 OSGi。我目前正在运行 JBoss FUSE,到目前为止,我从研究中收集到的信息是,我能够使用 FUSE 中内置的 OPS4J Pax Logging 库。
通常使用 log4j,您会记录如下消息:
但是,对于 PaxLogger 类 (v1.8.4),没有info方法,而是像这样的inform方法:
我被难倒的是通知方法所需的第二个参数。我想我可以传入一个空值,但是,我想我应该知道第二个参数应该做什么,而这是我似乎无法在网上找到的东西。大多数在线 Pax Logging 材料似乎已经过时。
有什么帮助吗?
spring - Orientdb分区图java实现
我有一个后端 Spring 应用程序和 Orientdb 图形数据库。我使用 Tinkerpop Frames 将 orientdb 顶点映射到 java 对象,并使用 OPS4J 进行 spring 事务管理。现在我想在那里实现一个多租户,其中几个客户(租户)使用这个应用程序实例。该应用程序完全按照 REST 原则运行,并且对多个 Angular 应用程序开放——每个应用程序每个客户。因此,前端 Angular 应用程序与我们的客户一样多,而后端 REST Spring 应用程序只有一个。后端从 HTTP 请求中识别租户。
现在我不确定最好的解决方案......
第一个解决方案
当我阅读 Orientdb 文档时,我发现了一种如何在 orientdb 中实现多租户的方法 - http://orientdb.com/docs/2.1/Partitioned-Graphs.html。但是我不知道如何通过 Java API 使用它,除非我不想为每个请求创建一个新的数据库连接。因为现在 Spring 事务管理器从连接池中获取连接,连接池是在 Spring 事务管理配置中集中设置的。我没有找到任何 Java 示例。
Spring事务管理配置:
获取连接:
第二种解决方案
另一种解决方案是使用 Tinkerpop
分区图
在 Orientdb 上工作的类,但我在 Orientdb 文档中没有找到任何关于这种可能性的句子。就在 Tinkerpop 中 - https://github.com/tinkerpop/blueprints/wiki/Partition-Implementation。它可以工作,但最后它只是在每个 orientdb 顶点中创建一个未索引的属性,所以我担心这里的查询性能。
有没有人有这方面的经验?有什么建议吗?
apache-karaf - pax jdbc 数据源配置变量
我将连接的 Docker mysql 实例与我的 docker 容器一起使用,该容器包含配置有 Pax JDBC 数据源的 Karaf 4 实例。
我的问题是我的 jdbc url 取决于 docker 设置的一些环境变量(因为 mysql 容器 IP 并不总是相同)。IP 地址变量是MYSQL_PORT_3306_TCP_ADDR
。
我尝试使用-DMYSQL_PORT_3306_TCP_ADDR=XXX.XXX.XXX.XXX
包含以下内容的配置文件 (etc/org.ops4j.datasource.mydb.cfg) 启动 karaf 并设置我的数据源:
但查看服务:karaf 中的列表,我看到:
所以这个变量显然没有被使用。
有没有办法做我想做的事?
最好的。
java - 带有 pax 日志记录的 Java Log4j2 未在 maven 项目中创建 Log4j2Plugins.dat 文件
我想用带有 ops4j-pax-logging 的 Log4j2 实现一个自定义插件,但Log4j2Plugins.dat
没有创建。当我只使用 Log4j2 时,它会毫无问题地创建。
maven - 在类路径中使用 pax-logging 属性文件
我正在使用带有 log4j2 的 pax-logging,并在 OSGi environemt 中编写了自定义附加程序。当我将 pax-logging 属性文件作为系统属性提供时,不会读取自定义附加程序。有没有办法在类路径中使用 pax-logging,比如 log4j2 使用它的属性文件?请有任何替代方案。
java - 在 OSGi 停止后忽略 Pax-log4j2 日志记录配置
我有一个包含多个 OSGi 捆绑包的 maven 项目,我使用 log4j2 和 pax-logging 作为日志记录后端。当我停止程序时,在 OSGi 框架关闭后,其余日志不遵循 log4j2 配置,因此日志消息采用不同的模式。我使用了以下两个系统属性:
设置 pax-logging.properties 配置文件和 defaultSerivceLog 级别,log4j2.xml 是用于日志记录的配置文件。OSGi 关闭后,使用 pax-logging 但不使用 log4j2 配置。我想通过 pax-log4j2 记录它。