0

When I started the Jetty (over Gretty plugin) I get the CNF exception. When I run

gradlew :MyWebApplication:appRun -ds > g.log I see following configuration in debug:

    {
    "servletContainerId": "jetty9.3",
    "servletContainerDescription": "Jetty 9.3.25.v20180904",
    "httpEnabled": true,
    "httpPort": 8585,
    "serverConfigFile": "C:\\Users\\user\\eclipse-workspace\\WS\\jetty.xml",
    "logbackConfigFile": "C:\\Users\\user\\eclipse-workspace\\WS\\MyWebApp\\config\\logback.xml",
    "loggingLevel": "INFO",
    "consoleLogEnabled": true,
    "fileLogEnabled": true,
    "logFileName": "MyWebApp",
    "logDir": "C:\\Users\\user/logs",
    "baseDir": "C:\\Users\\user\\eclipse-workspace\\WS\\MyWebApp\\build\\serverBaseDir_jetty9.3",
    "webApps": [{
            "inplace": true,
            "inplaceMode": "soft",
            "webappClassPath": ["file:/C:/Users/user/eclipse-workspace/WS/MyWebApp/build/classes/java/main/", "file:/C:/Users/user/eclipse-workspace/WS/MyWebApp/build/resources/main", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/4.3.7.RELEASE/7b69fc68cdb74c1c92f72905af6995696fcb56aa/spring-web-4.3.7.RELEASE.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.3.7.RELEASE/54fa2db94cc7222edc90ec71354e47cd1dc07f7b/spring-core-4.3.7.RELEASE.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.3.7.RELEASE/2de9f59f3202965438f3a02057d6ad8274636044/spring-beans-4.3.7.RELEASE.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/4.3.7.RELEASE/3f243d685e4a8a78a0c291445c6d85560ec4d339/spring-aop-4.3.7.RELEASE.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/4.3.7.RELEASE/34b66b0b7910122ef95ba4fff6da9238ef80a5de/spring-context-4.3.7.RELEASE.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/4.3.7.RELEASE/5257b6486e43d8c05674323fea5b415d4da72f38/spring-expression-4.3.7.RELEASE.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-frontend-jaxws/3.1.12/b692298ec0df9920732e4248c52b136515c5b286/cxf-rt-frontend-jaxws-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-core/3.1.12/ff07181b388f099e9e7095cbe3d586a391d84dc3/cxf-core-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.ws.xmlschema/xmlschema-core/2.2.2/3346ea4712a8bc80dbc1877628bfca1d6c4d55ef/xmlschema-core-2.2.2.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.codehaus.woodstox/woodstox-core-asl/4.4.1/84fee5eb1a4a1cefe65b6883c73b3fa83be3c1a1/woodstox-core-asl-4.4.1.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.codehaus.woodstox/stax2-api/3.1.4/ac19014b1e6a7c08aad07fe114af792676b685b7/stax2-api-3.1.4.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-bindings-xml/3.1.12/d7cc73475b7fd4be85b67d94c980da9b89cc365b/cxf-rt-bindings-xml-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/da08b8cce7bbf903602a25a3a163ae252435795/asm-5.0.4.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-bindings-soap/3.1.12/593a4f533452842d76ced8c23b230e0ed0e033db/cxf-rt-bindings-soap-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-wsdl/3.1.12/cc2bf92c9818b12aa9a8383297c15b5ee51f8a44/cxf-rt-wsdl-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/wsdl4j/wsdl4j/1.6.3/6d106a6845a3d3477a1560008479312888e94f2f/wsdl4j-1.6.3.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-databinding-jaxb/3.1.12/c0a312c95af2197a0f0496f903442ece0c3d6cc6/cxf-rt-databinding-jaxb-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-core/2.2.11/c3f87d654f8d5943cd08592f3f758856544d279a/jaxb-core-2.2.11.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-impl/2.2.11/a49ce57aee680f9435f49ba6ef427d38c93247a6/jaxb-impl-2.2.11.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-ws-addr/3.1.12/aea598a46cfb69e9cb61c06684461b225e304e5c/cxf-rt-ws-addr-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-ws-policy/3.1.12/18364d215dc9df5821b118b0387f3aef4ebd1b8d/cxf-rt-ws-policy-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.neethi/neethi/3.0.3/ee37a38bbf9f355ee88ba554a85c9220b75ba500/neethi-3.0.3.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-frontend-simple/3.1.12/26a89cf3181e23b31ea84e3baf3006e1c7699de7/cxf-rt-frontend-simple-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/xml-resolver/xml-resolver/1.2/3d0f97750b3a03e0971831566067754ba4bfd68c/xml-resolver-1.2.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.cxf/cxf-rt-transports-http/3.1.12/3f0d7bb7971e8b0c9ce135f81debca4b5ebcd65f/cxf-rt-transports-http-3.1.12.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.5.3/d1577ae15f01ef5438c5afc62162457c00a34713/httpclient-4.5.3.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.9/9ce04e34240f674bc72680f8b843b1457383161a/commons-codec-1.9.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.6/e3fd8ced1f52c7574af952e2e6da0df8df08eb82/httpcore-4.4.6.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/com.cgi..3rdparty/ojdbc8/12.2.0.1.0/60f439fd01536508df32658d0a416c49ac6f07fb/ojdbc8-12.2.0.1.0.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/soap/soap/2.3.1/b1c8d536eead15574d6324b30c450176f70b830d/soap-2.3.1.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.25/da76ca59f6a57ee3102f8f9bd9cee742973efa8a/slf4j-api-1.7.25.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.2.3/864344400c3d4d92dfeb0a305dc87d953677c03c/logback-core-1.2.3.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.slf4j/jcl-over-slf4j/1.7.25/f8c32b13ff142a513eeb5b6330b1588dcb2c0461/jcl-over-slf4j-1.7.25.jar", "file:/C:/Users/user/eclipse-workspace/WS/Authentication/Client/build/classes/java/main/", "file:/C:/Users/user/eclipse-workspace/WS/Authentication/Client/build/resources/main", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.5/a1e6cbb3cc2c5f210dd1310ff9fcb2c09c0d1438/httpclient-4.5.jar", "file:/C:/Users/user/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.1/f5aa318bda4c6c8d688c9d00b90681dcd82ce636/httpcore-4.4.1.jar", "file:/C:/Users/user/eclipse-workspace/WS/MonitoringSupport/build/classes/java/main/", "file:/C:/Users/user/eclipse-workspace/WS/MonitoringSupport/build/resources/main", "file:/C:/Users/user/eclipse-workspace/WS/Plus/build/classes/java/main/", "file:/C:/Users/user/eclipse-workspace/WS/Plus/build/resources/main/"],
            "contextPath": "/MyWebApp",
            "webXml": null,
            "resourceBase": "C:\\Users\\user\\eclipse-workspace\\WS\\MyWebApp\\build/inplaceWebapp/"
        }
    ]
    }

See the CP part: enter image description here

here is the jetty.xml:

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="ResourceRef_MyWebApp" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg></Arg>
    <Arg>jdbc/MyWebAppDS</Arg>
    <Arg>
      <New class="oracle.jdbc.pool.OracleDataSource">
        <Set name="DriverType">thin</Set>
        <Set name="URL">jdbc:oracle:thin:@localhost:1521/XE</Set>
        <Set name="User">user</Set>
        <Set name="Password">passwd</Set>
        <Set name="connectionCachingEnabled">true</Set>
        <Set name="connectionCacheProperties">
          <New class="java.util.Properties">
            <Call name="setProperty">
              <Arg>MinLimit</Arg>
              <Arg>5</Arg>
            </Call>
          </New>
        </Set>
      </New>
    </Arg>
 </New>
 </Configure>

It's Jetty server configuration for Oracle JNDI DS. Unfortunately Gretty plugin reports "Config error" with no detail:

15:47:58.311 [QUIET] [system.out] 07/15/19 15:47:58.311 [main] WARN  Config error at <New id="ResourceRef_MyWebApp" class="org.eclipse.jetty.plus.jndi.Resource"><Arg/><Arg>jdbc/MyWebAppDS</Arg><Arg>
15:47:58.311 [QUIET] [system.out]       <New class="oracle.jdbc.pool.OracleDataSource"><Set name="DriverType">thin</Set><Set name="URL">jdbc:oracle:thin:@localhost:1521/XE</Set><Set name="User">user</Set><Set name="Password">passwd</Set><Set name="connectionCachingEnabled">true</Set><Set name="connectionCacheProperties">
15:47:58.312 [QUIET] [system.out]           <New class="java.util.Properties"><Call name="setProperty"><Arg>MinLimit</Arg><Arg>5</Arg></Call></New>
15:47:58.312 [QUIET] [system.out]         </Set></New>
15:47:58.312 [QUIET] [system.out]     </Arg></New>  [o.e.j.x.XmlConfiguration] [XmlConfiguration.java:451]
15:47:58.350 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: FAILED
15:47:58.350 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'command 'C:\Java\jdk1.8.0_191\bin\java.exe'' finished with exit value 1 (state: FAILED)

and Jetty ClassLoader produce:

15:47:58.312 [ERROR] [system.err] Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.pool.OracleDataSource
15:47:58.313 [ERROR] [system.err]       at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
15:47:58.313 [ERROR] [system.err]       at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
15:47:58.313 [ERROR] [system.err]       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
15:47:58.313 [ERROR] [system.err]       at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
15:47:58.313 [ERROR] [system.err]       at org.eclipse.jetty.util.Loader.loadClass(Loader.java:86)

it's obviously CL issue, but I don't know where to add ojdbc.jar to be usable by jetty. (I do not like to add it into java.class.path System Property, but like to use it only for all web applications in build).

Marek-A-
  • 474
  • 12
  • 29

1 Answers1

1

Classes loaded by jetty.xml are part of the Server classpath.

But your oracle class is configured to be part of your webapp's classpath.

The Server cannot see into your WebApp due to standard WebApp classpath isolation.

Move your oracle jar to the Server classpath.

Joakim Erdfelt
  • 46,896
  • 7
  • 86
  • 136
  • Thank you for response, I like to do what you suggested, but I didn't fond how to do it for Gretty plugin of Gradle. I know the Jetty allow to use "Module specified Libraries" https://www.eclipse.org/jetty/documentation/9.4.19.v20190610/startup-classpath.html under "baseDir" which I've logged, but I can't find option how to pass this configuration from Gretty, so I use the jetty-env.xml under WEB_INF which is not nice solution, because I have to repeat it for multi-project. – Marek-A- Jul 18 '19 at 13:00
  • Using `jetty-env.xml` is valid, but that makes each env entry webapp specific, you can't share a common jndi across webapps that way. – Joakim Erdfelt Jul 18 '19 at 13:09