点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
在本地启动SAP Commerce 1811(使用JNDI和Oracle DB)时出现此错误:
SCHWERWIEGEND:将上下文初始化事件发送到类[de.hybris.platform.spring.HybrisContextLoaderListener]的侦听器实例的异常 java.lang.RuntimeException:java.sql.SQLException:由于名称[comp/env/jdbc/hybrisDS]而未绑定JNDI数据源'java:comp/env/jdbc/hybrisDS'时出错。 找不到[comp]。 在de.hybris.platform.jdbcwrapper.DataSourceImpl.adjustDatabaseInfos(DataSourceImpl.java:660) 在de.hybris.platform.jdbcwrapper.DataSourceImpl。(DataSourceImpl.java:218) 在de.hybris.platform.jdbcwrapper.DataSourceImpl。 (DataSourceImpl.java:168)
我的客户要求在server.xml中没有定义全局资源。 因此,我将资源定义移至context.xml。 这是我店面中web.xml的2个文件+修订:
server.xml
<服务器端口="-1" shutdown =" SHUTDOWN">context.xml<服务名称=" Catalina"> <连接器端口=" 9001" maxHttpHeaderSize =" 8192" maxPostSize =" 6291456" maxThreads =" 200" protocol =" HTTP/1.1" executor =" hybrisExecutor" enableLookups =" false" acceptCount =" 100" connectionTimeout =" 20000" URIEncoding =" UTF-8" disableUploadTimeout =" true"/> <连接器端口=" 9002" maxHttpHeaderSize =" 8192" maxPostSize =" 6291456" maxThreads =" 150" protocol =" HTTP/1.1" executor =" hybrisExecutor" enableLookups =" false" acceptCount =" 100" connectionTimeout =" 20000" disableUploadTimeout =" true" URIEncoding =" UTF-8" SSLEnabled =" true" scheme =" https" secure =" true" clientAuth =" false" sslProtocol =" TLS" keyAlias =" 1" keystoreFile =" $ {catalina.home}/lib/keystore" keystorePass =" 123456" /> <连接器协议=" AJP/1.3" URIEncoding =" UTF-8"端口=" 8009"/> 服务> <主机名=" localhost" appBase =" webapps" unpackWARs =" false" autoDeploy =" false" startStopThreads =" 0"> ..... <!-租户'master'的'hac'扩展的上下文-> ..... <!-租户'master'的'backoffice'扩展的上下文-> ..... <!-租户'master'的'myShop'扩展名上下文->
<?xml version =" 1.0" encoding =" UTF-8"?><资源名称=" jdbc/hybrisDS" auth ="容器" type =" oracle.jdbc.pool.OracleDataSource" username =" hybris" password =" hybris" driverClassName =" oracle.jdbc.driver.OracleDriver" factory =" org.apache.tomcat.jdbc.pool.DataSourceFactory" maxActive =" 90" maxIdle =" 90" maxWait =" 10000" testWhileIdle =" true" timeBetweenEvictionRunsMillis =" 10000" minEvictableIdleTimeMillis =" 300000" numTestsPerEvictionRun =" 100" testOnBorrow =" true" testOnReturn =" true" whenExhaustedAction =" 1" url =" jdbc:oracle:thin:@localhost:1521:xe" />
web.xml(添加的资源注册表):
<资源参考>这是对MySQL数据库连接的全局资源的引用。 jdbc/hybrisDS oracle.jdbc.pool.OracleDataSource 容器
local.properties(数据库属性)
db.pool.name = hybrisDS db.pool.fromJNDI = java:comp/env/jdbc/$ {db.pool.name} db.pool.fromJNDI.dbtype = oracle
我在这里缺少一些配置吗?
致谢
安迪
你好
这是我在2020年5月底在支持票中收到的SAP的正式声明:
我们不支持context.xml中的JNDI数据源。 我们看不到安全问题,因为tomcat仅应用于hybris。
希望这可以帮助遇到此问题的任何人。
最好的问候
Andy
解决方案1:由于您必须执行非标准设置,因此请您的客户使用SAP创建票证,SAP会为您提供配置。
分析:看来数据源仅针对Web上下文"/img/app/NTQ"配置。 但是,访问数据库的时间较早。
解决方案2:通过tomcat配置以某种方式全局注册jdbc数据源。 也许此链接有帮助:
http://tomcat.apache.org/ tomcat-7.0-doc/jndi-resources-howto.html#Global_configuration
解决方案3:您的客户可能有此策略,因为-通常-在tomcat上部署了多个应用程序。 因此,从安全角度考虑,您可以禁止全局数据源声明。 向客户说明此tomcat实例专用于hybris。 您不能在上面部署其他任何东西。 在这种情况下,全局数据源声明不构成安全威胁。
一周热门 更多>