没有全局资源的Tomcat

2020-08-14 07:15发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 在本地启动SAP Com...

         点击此处--->   EasySAP.com群内免费提供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">
 
    
   <服务名称=" 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'扩展名上下文->
 
 
 

 
 
 
 
       
     
   
  
context.xml
 <?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
 

我在这里缺少一些配置吗?

致谢

安迪

2条回答
大简至美
2020-08-14 07:53

解决方案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。 您不能在上面部署其他任何东西。 在这种情况下,全局数据源声明不构成安全威胁。

一周热门 更多>