Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-users] Maven Jetty Plugin and JNDI datasources in Server context

Hi,

I try to set up my databases via JNDI for our development environment which emulates the productive configuration. I decided to configure the embedded Jetty server that is used by the Maven Jetty plugin.
As I we have 3 webapps I would like to configure the datasources in the server context. So I added a custom jetty.xml which I reference in Mavens plugin configuration:

<plugin>
		<groupId>org.eclipse.jetty</groupId>
		<artifactId>jetty-maven-plugin</artifactId>
		<version>9.3.11.v20160721</version>
		<configuration>
				<jettyXml>${basedir}/src/main/etc/jetty.xml</jettyXml>

Well, for easy stuff it works like expected and Jetty starts:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd";>

<Configure id="Server" class="org.eclipse.jetty.server.Server">
	<Set name="stopTimeout">5000</Set>
</Configure>

But if I add some more serious stuff it fails:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd";>

<Configure id="Server" class="org.eclipse.jetty.server.Server">
	<Set name="stopTimeout">5000</Set>
	<New id="myds" class="org.eclipse.jetty.plus.jndi.Resource">
		<Arg></Arg>
		<Arg>jdbc/myds</Arg>
		<New class="com.zaxxer.hikari.HikariDataSource">
			<Arg>
				<New class="com.zaxxer.hikari.HikariConfig">
					<Set name="minimumPoolSize">5</Set>
					<Set name="maximumPoolSize">20</Set>
					<Set name="dataSourceClassName">com.mysql.jdbc.jdbc2.optional.MysqlDataSource</Set>
					<Set name="username">root</Set>
					<Set name="password">test</Set>
					<Call name="addDataSourceProperty">
						<Arg>url</Arg>
						<Arg>jdbc:mysql://localhost:3306/lportal</Arg>
					</Call>
				</New>
			</Arg>
		</New>
	</New>
</Configure>


Of course I added the mysql-connector and HikariCP as plugin dependencies:

<plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>9.3.11.v20160721</version>
        <dependencies>
                <dependency>
                        <groupId>com.zaxxer</groupId>
                        <artifactId>HikariCP</artifactId>
                        <version>2.4.6</version>
                </dependency>
                <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.36</version>
                </dependency>
                <dependency>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-plus</artifactId>
                        <version>9.3.11.v20160721</version>
                </dependency>
                <dependency>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-jndi</artifactId>
                        <version>9.3.11.v20160721</version>
                </dependency>
        </dependencies>

But I still get:

[INFO] --- jetty-maven-plugin:9.3.11.v20160721:run (default-cli) @ webpage-frontend ---
[INFO] Logging initialized @6888ms
[INFO] Configuring Jetty for project: Webpage frontend
[INFO] webAppSourceDirectory not set. Trying src/main/webapp
[INFO] Reload Mechanic: automatic
[INFO] Classes = /home/vaadin/repos/webpage/webpage-frontend/target/classes
[INFO] Configuring Jetty from xml configuration file = /home/vaadin/repos/webpage/webpage-frontend/src/main/etc/jetty.xml
[WARNING] Config error at <New id="myds" class="org.eclipse.jetty.plus.jndi.Resource"><Arg/><Arg>jdbc/myds</Arg><New class="com.zaxxer.hikari.HikariDataSource"><Arg>
                                <New class="com.zaxxer.hikari.HikariConfig"><Set name="minimumPoolSize">5</Set><Set name="maximumPoolSize">20</Set><Set name="dataSourceClassName">com.mysql.jdbc.jdbc2.optional.MysqlDataSource</Set><Set name="username">root</Set><Set name="password">test</Set><Call name="addDataSourceProperty"><Arg>url</Arg><Arg>jdbc:mysql://localhost:3306/lportal</Arg></Call></New>
                        </Arg></New></New>
[INFO] Jetty server exiting.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.890 s
[INFO] Finished at: 2016-08-04T12:54:51+02:00
[INFO] Final Memory: 23M/263M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.eclipse.jetty:jetty-maven-plugin:9.3.11.v20160721:run (default-cli) on project webpage-frontend: Failure: InvocationTargetException: NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.eclipse.jetty:jetty-maven-plugin:9.3.11.v20160721:run (default-cli) on project webpage-frontend: Failure
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Failure
        at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:488)
        at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:328)
        at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute(JettyRunMojo.java:170)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
        ... 20 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.eclipse.jetty.util.TypeUtil.construct(TypeUtil.java:580)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:787)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:423)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:358)
        at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:259)
        at org.eclipse.jetty.maven.plugin.ServerSupport.applyXmlConfigurations(ServerSupport.java:211)
        at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.applyJettyXml(AbstractJettyMojo.java:404)
        at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:427)
        ... 24 more
Caused by: java.lang.NullPointerException
        at org.eclipse.jetty.plus.jndi.NamingEntry.save(NamingEntry.java:191)
        at org.eclipse.jetty.plus.jndi.Resource.<init>(Resource.java:39)
        ... 36 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Any ideas?

Cheers,
  Paul


Back to the top