java - 使用捆绑的库 Websphere 自由
问题描述
我正在将 websphere liberty 与 java 8 docker 映像一起使用,但在尝试了一切之后。我无法根据我的假设和日志加载我自己的捆绑库而不是内置的 liberty 我的 jsp 和其他库WEB-INF/lib
位于我的 war 文件内的目录中
这是我正在使用的配置
<?xml version="1.0" encoding="UTF-8"?>
<server description="Default server">
<!-- Enable features -->
<featureManager>
<feature>javaee-8.0</feature>
<feature>microProfile-3.0</feature>
</featureManager>
<basicRegistry id="basic" realm="BasicRealm">
<!-- <user name="yourUserName" password="" /> -->
</basicRegistry>
<logging traceSpecification="com.ibm.ws.webcontainer*=all:com.ibm.wsspi.webcontainer*=all:HTTPChannel=all:GenericBNF=all:HTTPDispatcher=all"
traceFileName="trace.log"
maxFileSize="20"
maxFiles="10"
traceFormat="BASIC" />
<library id="OJDBC5Lib">
<fileset dir="/config/ojdbc5.jar" includes="ojdbc5.jar"/>
</library>
<!-- To allow access to this server from a remote client host="*" has been added to the following element -->
<httpEndpoint id="defaultHttpEndpoint"
host="*"
httpPort="9080"
httpsPort="9443" />
<webApplication id="e-app" name="e-app" location="/apps/e-app.war" contextRoot="/e-app">
<classloader delegation="parentLast" />
</webApplication>
当我跑步时。我遇到异常的应用程序
[AUDIT ] CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 14.831 seconds.
[ERROR ] SRVE0271E: Uncaught init() exception created by servlet [Faces Servlet] in application [e-app]: java.lang.IllegalStateException: Could not find ba
ckup for factory javax.faces.context.FacesContextFactory.
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1004)
at [internal classes]
[ERROR ] SRVE0276E: Error while initializing Servlet [Faces Servlet]: javax.servlet.ServletException: SRVE0207E: Uncaught initialization exception created by servlet
at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:360)
at [internal classes]
Caused by: java.lang.IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextFactory.
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1004)
... 1 more
有人可以告诉我在配置中需要做什么才能使其工作
解决方案
这里的问题是该javaee-8.0
特性包括jsf-2.3
包含 JSF API 和 Liberty 的 JSF 实现的特性。为了提供您自己的 JSF 实现,您需要删除该jsf-2.3
功能并改用该jsfContainer-2.3
功能。该文档有更多详细信息:https ://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_jsf23_implementations.html
该javaee-8.0
功能包括大量功能 - 其中许多您可能不需要,但不幸的是,您需要指定您确实需要的所有功能(除了jsfContainer-2.3
)。所以你的 server.xml 的<featureManager>
元素最终可能看起来像这样:
<featureManager>
<!-- webprofile-8.0 features but using jsfContainer instead of jsf -->
<feature>appSecurity-3.0</feature>
<feature>beanValidation-2.0</feature>
<feature>cdi-2.0</feature>
<feature>ejbLite-3.2</feature>
<feature>el-3.0</feature>
<feature>jaspic-1.1</feature>
<feature>jaxrs-2.1</feature>
<feature>jdbc-4.2</feature>
<feature>jndi-1.0</feature>
<feature>jpa-2.2</feature>
<feature>jsfContainer-2.3</feature>
<feature>jsonb-1.0</feature>
<feature>jsonp-1.1</feature>
<feature>jsp-2.3</feature>
<feature>managedBeans-1.0</feature>
<feature>servlet-4.0</feature>
<feature>transaction-1.2</feature>
<feature>websocket-1.1</feature>
<!-- full profile 8 features not in web profile -->
<feature>appClientSupport-1.0</feature>
<feature>batch-1.0</feature>
<feature>concurrent-1.0</feature>
<feature>ejb-3.2</feature>
<feature>jacc-1.5</feature>
<feature>javaMail-1.6</feature>
<feature>javax.persistence.base-2.2</feature>
<feature>jaxws-2.2</feature>
<feature>jca-1.7</feature>
<feature>jcaInboundSecurity-1.0</feature>
<feature>jms-2.0</feature>
<feature>j2eeManagement-1.1</feature>
<feature>wasJmsClient-2.0</feature>
<feature>wasJmsSecurity-1.0</feature>
<feature>wasJmsServer-1.0</feature>
</featureManager>
这是一个庞大的列表,因此您可能需要稍微修剪一下(例如,如果您不使用 JMS,则删除所有与 JMS 相关的功能)。但是,一旦您进行了交换jsf-2.3
,jsfContainer-2.3
Liberty 应该会在您的应用程序中找到并使用 JSF 实现——您也不需要在您的应用程序中使用 parentLast 委托。
推荐阅读
- r - R中同一列中两个日期之间的天数差异
- sapui5 - 如何在选择对话框中检查所有记录?
- dependency-injection - 面临将 sharedPreferences 和 sharedPrefrencesEditor 添加到 Koin 模块的问题
- jira - 如何使用 C# 从 winform 中的 JIRA 开发面板中提取详细信息?
- python - GIMP 2.10 Python - 如何导入自定义模块?
- python - 读取 CSV 文件并将函数结果写入另一个文件
- c - Dbus ipc通信问题
- json - 使用 SwiftJson 解析数组多维
- javascript - '$' 未定义 no-undef reactjs ajaxcall
- java - 无法通过按位运算获得长值