Tomcat без глобального ресурса - PullRequest
0 голосов
/ 06 апреля 2020

Я получаю эту ошибку при локальном запуске SAP Commerce 1811 (с JNDI и Oracle DB):

SCHWERWIEGEND: Exception sending context initialized event to listener instance of class [de.hybris.platform.spring.HybrisContextLoaderListener]
java.lang.RuntimeException: java.sql.SQLException: error looking up JNDI data source 'java:comp/env/jdbc/hybrisDS' due to Name [comp/env/jdbc/hybrisDS] is not bound in this Context. Unable to find [comp].
        at de.hybris.platform.jdbcwrapper.DataSourceImpl.adjustDatabaseInfos(DataSourceImpl.java:660)
        at de.hybris.platform.jdbcwrapper.DataSourceImpl.<init>(DataSourceImpl.java:218)
        at de.hybris.platform.jdbcwrapper.DataSourceImpl.<init>(DataSourceImpl.java:168)

Мой клиент требует, чтобы на сервере не был определен глобальный ресурс. xml , Поэтому я перенес определение ресурса в контекст. xml. Вот 2 файла + поправка к сети. xml в моем магазине:

server. xml

<Server port="-1" shutdown="SHUTDOWN">
<Listener className="de.hybris.tomcat.HybrisGlobalResourcesLifecycleListener"  dataSourceName="java:comp/env/jdbc/hybrisDS"/>
  <GlobalNamingResources></GlobalNamingResources>
  <Service name="Catalina" >
    <Executor     name="hybrisExecutor"
                    namePrefix="hybrisHTTP"
                    maxThreads="200"
                    minSpareThreads="40"
                    maxIdleTime="10000"/>
    <Connector port="9001"
               maxHttpHeaderSize="8192"
               maxPostSize="6291456"
               maxThreads="200"
               protocol="HTTP/1.1"
               executor="hybrisExecutor"
               enableLookups="false"
               acceptCount="100"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               disableUploadTimeout="true" />
    <Connector port="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"
                />
    <Connector  protocol="AJP/1.3"  URIEncoding="UTF-8"  port="8009" /> 
    <Engine name="Catalina" defaultHost="localhost" startStopThreads="0">
            <Valve  className="org.apache.catalina.valves.AccessLogValve"
                    directory="D:\Projekte\myproject\hybris\log/tomcat"
                    prefix="access."
                    suffix=".log"
                    pattern="combined"
          />
      <Host     name="localhost"
                appBase="webapps"
                unpackWARs="false"
                autoDeploy="false"
                startStopThreads="0">               
                <Valve className="org.apache.catalina.valves.ErrorReportValve" 
                       showReport="false" 
                       showServerInfo="false"/>
.....
            <!-- 'hac' extension's context for tenant 'master' -->
            <Context path="/hac" docBase="D:\Projekte\myproject\hybris\bin\platform\ext\hac/web/webroot" >
                <Manager pathname="" />
                <Loader platformHome="D:\Projekte\myproject\hybris\bin\platform" className="de.hybris.tomcat.HybrisWebappLoader" deployName="default" />

                <JarScanner >
                    <JarScanFilter defaultTldScan="false" tldScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},taglibs-standard-impl*.jar,spring-security-taglibs-*.jar,spring-webmvc*.jar,displaytag*.jar,javax.servlet.jsp.jstl-*.jar" defaultPluggabilityScan="false" pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},taglibs-standard-impl*.jar,spring-security-taglibs-*.jar,spring-webmvc*.jar,displaytag*.jar,javax.servlet.jsp.jstl-*.jar,*_hac.jar" />
                </JarScanner>
            </Context>
.....
            <!-- 'backoffice' extension's context for tenant 'master' -->
            <Context path="/backoffice" docBase="D:\Projekte\myproject\hybris\bin\ext-backoffice\backoffice/web/webroot" >
                <Manager pathname="" />
                <Loader platformHome="D:\Projekte\myproject\hybris\bin\platform" className="de.hybris.tomcat.HybrisWebappLoader" deployName="default" />

                <JarScanner >
                    <JarScanFilter defaultTldScan="false" tldScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},taglibs-standard-impl*.jar,spring-security-taglibs-*.jar,spring-webmvc*.jar" defaultPluggabilityScan="false" pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},taglibs-standard-impl*.jar,spring-security-taglibs-*.jar,spring-webmvc*.jar,webfragment*.jar" />
                </JarScanner>
            </Context>
.....
            <!-- 'myShop' extension's context for tenant 'master' -->
            <Context path="/myShop" docBase="D:\Projekte\myproject\hybris\bin\ext-storefront\myShop/web/webroot" useHttpOnly="true">
                <Manager pathname="" />
                <Loader platformHome="D:\Projekte\myproject\hybris\bin\platform" className="de.hybris.tomcat.HybrisWebappLoader" deployName="default" />

                <JarScanner >
                    <JarScanFilter defaultTldScan="false" tldScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},taglibs-standard-impl*.jar,spring-security-taglibs-*.jar,spring-webmvc*.jar,json-taglib*.jar,jstl-impl*.jar" defaultPluggabilityScan="false" pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},taglibs-standard-impl*.jar,spring-security-taglibs-*.jar,spring-webmvc*.jar,json-taglib*.jar,jstl-impl*.jar" />
                </JarScanner>
            </Context>
      </Host>
    </Engine>
  </Service>
</Server>

context. xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/app/NTQ" sessionCookiePath="/app/NTQ"
         docBase="D:\Projekte\myProject\hybris\bin\platform\..\ext-storefront\myShop\web\webroot"
         privileged="true" antiResourceLocking="false" unpackWAR="false" >

    <Manager pathName="" className="org.apache.catalina.session.StandardManager"/>
    <Loader platformHome="D:\Projekte\myProject\hybris\bin\platform" className="de.hybris.tomcat.HybrisWebappLoader" deployName="default" />
    <Resource name="jdbc/hybrisDS"
              auth="Container"
              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"
    />
</Context>

web. xml (добавлен реестр ресурсов):

<resource-ref>
   <description>This is a reference to the global Resource for database connection.</description>
   <res-ref-name>jdbc/hybrisDS</res-ref-name>
   <res-type>oracle.jdbc.pool.OracleDataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

local.properties (db properties)

db.pool.name=hybrisDS
db.pool.fromJNDI=java:comp/env/jdbc/${db.pool.name}
db.pool.fromJNDI.dbtype=oracle

Мне не хватает какой-то конфигурации?

С уважением, Энди

...