Jetty 7: настройка JNDI для Start.java - PullRequest
8 голосов
/ 28 октября 2011

Следуя примеру Wicket 1.5, я конвертирую проект из Jetty 6.1.25 в 7.5.0.v20110901.Мой существующий Start.java содержит следующую настройку, которую я использую для настройки JNDI:

    EnvConfiguration envConfiguration = new EnvConfiguration();
    URL url = new File("src/main/webapp/WEB-INF/jetty-env.xml").toURI().toURL();
    envConfiguration.setJettyEnvXml(url);

    bb.setConfigurations(new Configuration[]{new WebInfConfiguration(),
                         envConfiguration,
                         new org.mortbay.jetty.plus.webapp.Configuration(), new JettyWebXmlConfiguration(),
                         new TagLibConfiguration()});

Тогда мой jetty-env.xml имеет следующее:

<Configure class="org.mortbay.jetty.webapp.WebAppContext">

    <New class="org.mortbay.jetty.plus.naming.Resource">
        <Arg>jdbc/myapp</Arg>
        <Arg>
            <New class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <Set name="driverClassName">com.mysql.jdbc.Driver</Set>
                <Set name="url">jdbc:mysql://localhost/myapp?characterEncoding=utf8</Set>
                <Set name="username">username</Set>
                <Set name="password">password</Set>
            </New>
        </Arg>
    </New>

</Configure>

Это отлично работает в Jetty6, но в 7 org.mortbay.jetty.plus.webapp.Configuration, кажется, не существует (или, возможно, я скучаю по банке).

Может кто-нибудь дать мне несколько советов о том, как настроить JNDI с Jetty 7?

Ответы [ 2 ]

5 голосов
/ 28 декабря 2011

Добавьте в файл src / test / jetty / jetty-env.xml следующее:

<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
    <New class="org.eclipse.jetty.plus.jndi.EnvEntry">
    <Arg>jdbc/mydatasource</Arg>
    <Arg>
        <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
            <Set name="Url">jdbc:mysql://localhost/mydatabase?characterEncoding=utf8</Set>
            <Set name="User">username</Set>
            <Set name="Password">password</Set>
        </New>
    </Arg>
    </New>
</Configure>

Затем измените Start.java, чтобы определить следующие свойства:

System.setProperty("java.naming.factory.url.pkgs", "org.eclipse.jetty.jndi");
System.setProperty("java.naming.factory.initial", "org.eclipse.jetty.jndi.InitialContextFactory");

И добавьте следующую конфигурацию в WebAppContext:

EnvConfiguration envConfiguration = new EnvConfiguration();
URL url = new File("src/test/jetty/jetty-env.xml").toURI().toURL();
envConfiguration.setJettyEnvXml(url);

bb.setConfigurations(new Configuration[]{ new WebInfConfiguration(), envConfiguration, new WebXmlConfiguration() });

Полная информация о моем блоге .

4 голосов
/ 28 октября 2011

Начиная с Jetty 7, имя пакета было изменено с org.mortbay.jetty на org.eclipse.jetty.

Кроме того, org.eclipse.jetty.plus.webapp.Configuration было переименовано в версии 7.2.0 и новое имя PlusConfiguration.Я предполагаю, что это было сделано, чтобы избежать конфликта имен с org.eclipse.jetty.webapp.Configuration.

...