GWT Jetty JNDI поиск не удается - PullRequest
4 голосов
/ 28 марта 2011

Я использую gwt с jetty, но хочу использовать jndi для источника данных, поэтому следовал документации по eclipse gwt jetty jndi и сделал ниже, чтобы запустить мое приложение gwt

Запустите мое приложение gwt со следующими параметрами в eclipse

 -noserver 
-remoteUI "${gwt_remote_ui_server_port}:${unique_id}"
-startupUrl myapp.html
-logLevel INFO 
-codeServerPort 9997
-war war\location 
-server com.myproject.MyCustomJettyLauncher 
com.my.apps.app

Мой jetty-env.xml в конфигурации WEB-INF

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "
http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
 <New id="MSSQLDS" class="org.mortbay.jetty.plus.jndi.Resource">
    <Arg></Arg>
    <Arg>jdbc/MSSQLDS</Arg>
    <Arg>
     <New class="net.sourceforge.jtds.jdbcx.JtdsDataSource">
                 <Set name="User">dbuser</Set>
                 <Set name="Password">pwd</Set>
                 <Set name="DatabaseName">mydatabase</Set>
                 <Set name="ServerName">localhost</Set>
                 <Set name="PortNumber">1433</Set>

     </New>
    </Arg>
   </New>
</Configure>  

Когда я запускаю свое приложение, я получаю ошибку ниже

Starting Jetty on port 8888
   [WARN] Failed startup of context com.healthfortis.MyCustomJettyLauncher$WebAppContextWithReload@2ed7c530{/,C:\workspace\hf-src\src\main\webapp}
javax.naming.NameNotFoundException; 

оставшееся имя 'java: comp'

    at org.mortbay.naming.NamingContext.lookup(NamingContext.java:578)
    at org.mortbay.naming.NamingContext.lookup(NamingContext.java:680)
    at org.mortbay.naming.local.localContextRoot.lookup(localContextRoot.java:164)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at org.mortbay.jetty.plus.webapp.EnvConfiguration.createEnvContext(EnvConfiguration.java:51)
    at org.mortbay.jetty.plus.webapp.EnvConfiguration.configureWebApp(EnvConfiguration.java:103)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1217)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
    at com.healthfortis.MyCustomJettyLauncher$WebAppContextWithReload.doStart(MyCustomJettyLauncher.java:459)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:222)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at com.healthfortis.MyCustomJettyLauncher.start(MyCustomJettyLauncher.java:660)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:494)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1058)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:800)
    at com.google.gwt.dev.DevMode.main(DevMode.java:304)

похоже, что eclipsse / jetty не может найти источник данных jndi .. какие-либо предложения ??

1 Ответ

4 голосов
/ 01 августа 2012

В приведенной выше конфигурации есть две проблемы.

  • -noserver в параметре run - отключить запуск Jetty.Он используется для запуска веб-приложения на внешнем сервере, таком как tomcat и т. Д. Для запуска веб-приложения на встроенном Jetty-сервере в режиме разработки GWT эта опция не требуется.
  • В jetty-web.xml jdbc / MSSQLDS следует изменить на java: / comp / env / jdbc / MSSQLDS

Для настройки источника данных JNDI для запуска на встроенном сервере Jetty в режиме разработки GWT выполните следующие действия:следующим образом.(В качестве примера я использовал источник данных mysql, но для других источников данных шаги такие же)

  • Добавьте имя для Jetty - *. Jar, jetty-plus - *. Jar, чтобы спроецировать путь сборки, как показано на следующем экране.выстрел.Можно использовать Jetty lib, доступный по адресу / usr / share / jetty / lib.Можно использовать другие веб-серверы, такие как tomcat, в производственном процессе, они не добавлены в каталог WEB-INF / lib.В случае, если Jetty используется для производства env, то они могут быть добавлены в WEB-INF / lib dir.

Build Path


  • Добавьте файл jetty-web.xml со следующим содержимым в каталог WEB-INF

    <Arg>java:/comp/env/jdbc/dev</Arg>
    <Arg>
        <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
            <Set name="Url">jdbc:mysql://localhost:3306/dev?autoReconnect=true
            </Set>
            <Set name="User">dev</Set>
            <Set name="Password">dev</Set>
        </New>
    </Arg>
    

  • Запустите проект GWT как веб-приложение.Вы получите javax.naming.NoInitialContextException

  • Чтобы исправить это, перейдите в Run Configurations и откройте конфигурацию запуска приложения.Перейдите на вкладку «Аргументы» и добавьте следующую строку в «Аргументы виртуальной машины»

    -Djava.naming.factory.initial = org.mortbay.naming.InitialContextFactory

Снимок экрана конфигурации запуска


enter image description here


Сохраните настройки и запустите веб-приложение в режиме разработки.

...