问题标签 [pax-web]

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.

0 投票
2 回答
912 浏览

jetty - 在 Pax-Web 中创建 Jetty 连接器

是否有可能(API)通过 Pax-Web 以编程方式添加 Jetty 连接器。Pax-Web 内部使用了一个不错的JettyServer界面,但似乎没有可用的 OSGi 服务。必须可用的端口事先不知道,所以我不能jetty.xml用于配置目的。

有人有想法吗?

0 投票
1 回答
137 浏览

spring - 使用 spring dm 在 karaf 配置 hessian 服务

与环境:

  • 卡拉夫 3.0.1
  • 春天 3.2.4
  • 黑森州 4.0.33

我已经通过 CXF 公开了一项服务,现在我正试图公开与 Hessian 服务相同的服务。

没有war或web.xml,只有普通bean + pax-http,我尝试了以下方法:

这个想法是注册一个 servlet(一个 HttpRequestHandlerServlet),其目标是一个 HessianServiceExporter,但我得到一个No WebApplicationContext found: no ContextLoaderListener registered?.

我跟踪了 spring 代码,内部码头正在识别 servlet 并调用它的 init 方法:

这就是问题所在,因为没有 spring WebApplicationContext 并且目标属性不能被注入。

我错过了什么吗?或者不可能让它像这样工作。

作为一种解决方法,我正在考虑使用我自己的实现(setTarget 等)扩展 Servlet,但我不想这样做。


更新

在尝试创建并添加我自己的 HttpContext 之后,仍然缺少一些东西:

我实现了自己的 HttpContext:

添加了豆子

服务:

最后是作为服务的 servlet:

由于init 方法正在寻找 WebApplicationContext ,因此我应该声明并显式地声明 GenericWebApplicationContext bean,但我不知道如何将这个 bean 与 OSGi 所需的 HttpContext“加入”。

0 投票
1 回答
451 浏览

apache-karaf - 如何在 pax-web 中使用 @WebServlet 和 @Component

我有一个使用 Pax-Web WAR-Extender 的设置,因此我可以以标准方式注册 servlet。

在使用 WAR-Extender 之前,servlet 是一个单例,我可以在其中注入其他 osgi 引用。使用扩展器时,由于声明式服务 XML,服务会被注入,但是当我使用浏览器访问 Servlet 时,会创建一个新实例,而无需注入其他服务。

我的目标是避免以编程方式调用 OSGi-Service-Registry。是否有任何配置使我的 Servlet 被视为 Singleton 或 OSGi-Service 被重新注入?

0 投票
1 回答
607 浏览

jsf - Apache Karaf 部署 .War 文件

我的目的是在 OSGI 框架上运行 JSF 应用程序。因此,我正在尝试将 WAR 文件部署到 OSGi Web 应用程序的 servlet 容器,称为 PAX-WEB。我有一个在 WildFly 8.0 应用服务器上正常工作的 JSF 实现。我从这个应用程序成功地创建了 OSGi 化的 WAR 文件。当我尝试使用 Maven 将其部署到 PAX-WEB 时,会发生以下错误:

缺少要求:javax.servlet.annotation

/lib我的应用程序文件夹中有这些 JAR : jsf-api-2.1.7, jsf-impl-2.1.7, jsp-api-2.1, jstl-1.2. 当我添加javax.servlet-api-3.0.1.jar到我的 WAR 文件并重新部署它时,这次会发生以下错误:

javax.faces.webapp.FacesServlet 不能转换为 javax.servlet.Servlet

有了这个错误,我可以运行我的 JSF 页面,但它没有显示 JSF 标记。

0 投票
3 回答
1538 浏览

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 的系统上进行了尝试。

0 投票
2 回答
1806 浏览

java - 使用 Pax(包括 Jetty)在 Apache Karaf 中启用/禁用允许的密码套件

我正在使用 Apache Karaf 来托管我的 Web 服务。我在启动后使用下面显示的命令通过 Karaf 客户端启用了 SSL 连接,因为我有多个服务器运行相同的代码但具有不同的证书和配置。

铬警告

当我通过 SSL 连接到我的服务时,我收到关于使用过时加密的警告,并发现这篇文章解释了我需要如何更改我的服务器以仅使用现代加密算法。

  1. 我是否可以使用 Karaf/Pax 设置所需的算法,例如设置下面的 SSL 配置?(首选)
  2. 或者我是否需要按照此处所述使用 Jetty 和此页面中的信息进行自定义信任管理以启用/禁用密码套件

这是我当前用来设置 HTTPS 端口的示例代码。

谢谢!

0 投票
1 回答
1198 浏览

web-services - Camel cxf pax-web 处理 WS-Security 用户名令牌

我正在使用要部署在 Karaf 中的骆驼 cxf 实现 Web 服务。我正在使用 karaf 附带的 pax web。我在 pom 中使用 cxf codegen 插件对 java 执行 wsdl。

我在 RouteBuilder Java DSL 中定义 cxf uri 和路由。blueprint.xml 只有一些 bean 和 RouteBuilder 的引用。

我已经使用 pax-web(jetty.xml) 设置了 ssl。如果我发送带有用户名和密码的 WSSE 安全标头,它会生成 MustUnderstand soap 错误。

无法更改输入请求。我得到了这个例外。

如何保护 cxf 端点以验证请求?

谢谢你。

0 投票
1 回答
772 浏览

apache-camel - 如何为 Pax Web DefaultResourceMapping 指定 Jetty 连接器

我正在使用 Camel-CXF 从包中发布 Web 服务。我使用蓝图进行配置。我的理解是,这个CXF配置会在指定端口动态创建一个Jetty连接器,并在指定路径发布CXF servlet:

这很好用。服务端点在指定的端口和路径上可用。

现在我想让原始的 WSDL 可用,由 Tomi Vanek 的wsdl-viewer样式表转换。我想出了如何使用 Pax Web 的 DefaultResourceMapping 使静态资源可用:

但是,这使得 WSDL 可以在端口 8181 中的默认 Jetty 连接器上访问。我不知道如何将资源映射器绑定到默认连接器以外的任何其他连接器。更具体地说,对于为 CXF 端点动态创建的连接器。

0 投票
1 回答
1044 浏览

jsf - 如何在带有 PAX-WEB 4.2.3 / Jetty 9.2.10 的 Apache Karaf 4.0.3 中设置 CDI(OpenWebBeans 或 JBoss Weld)以与 JSF 一起使用

我正在尝试使用 CDI (PAX-CDI) 设置 Apache Karaf 4.0.3,以便将其与 JSF / Primefaces 一起使用。我已经用 Apache OpenWebBeans 和 JBoss Weld 尝试过,但每次尝试都以异常告终(见下文)。

我目前的设置:

一般的

src/main/webapp/WEB-INF/web.xml(剥离)

pom.xml(剥离)

一般 CDI 功能/捆绑包

JBoss 焊接

附加依赖项

额外的导入包

src/main/webapp/META-INF/context.xml

CDI 功能/捆绑包

OpenWebBeans

附加依赖项

没有任何

额外的导入包

src/main/webapp/META-INF/context.xml

CDI 功能/捆绑包

我对这些设置的问题

JBoss 焊接

使用 JBoss Weld,我目前遇到了 NoClassDefFoundError:

但是它正在寻找的类应该存在:

它不冲突有点奇怪,因为两个库都导出了该包,但我不确定这是否是问题以及如何解决它是否应该是问题,因为在运行时似乎需要这两个库.

OpenWebBeans

使用 OpenWebBeans,我必须修补 PAX-CDI 的当前开发分支 (0.x)!让它运行,因为旧的 Jetty 版本(JettyDecorator 实现了旧式接口)。现在一切正常,但是一旦 JSF Page 试图访问 Bean,我就会得到这个异常:

我的豆子

所以问题是:

有人知道我的配置是否有问题吗?有人用 JSF 运行 Apache Karaf / CDI 设置吗?Karaf 和 (PAX-)CDI 是否存在任何已知问题?

我真的很感激任何帮助!

在此先感谢和亲切的问候法比安

0 投票
1 回答
220 浏览

jetty - 如何在 Karaf 中设置 jetty.xml 片段捆绑属性

我创建了一个片段主机,org.ops4j.pax.web.pax-web-jetty其中包含一个在 Karaf 中完美提取的 jetty.xml 文件。

这个 jetty.xml 文件包含这样的一行:

你能告诉我在哪里设置jetty.ssl.host以便我可以设置一个值吗?

最好的,杰罗姆