gpt4 book ai didi

gwt jetty jndi 查找失败

转载 作者:行者123 更新时间:2023-12-04 22:09:24 26 4
gpt4 key购买 nike

我正在将 gwt 与 jetty 一起使用,但希望将 jndi 用于数据源,因此请遵循 eclipse gwt jetty jndi 的文档并在下面执行以运行我的 gwt 应用程序

在 Eclipse 中使用以下选项运行我的 gwt 应用程序

 -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

我的 WEB-INF 配置下的 jetty-env.xml
<?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;

remaining name '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 数据源..有什么建议吗??

最佳答案

上面的配置有两个问题

  • -noserver in run 选项是禁用 jetty 运行。它用于在 tomcat 等外部服务器上运行 Web 应用程序。在 GWT 开发模式下在嵌入式 jetty 服务器上运行 webapp 不需要此选项。
  • 在 jetty-web.xml 中 jdbc/MSSQLDS 应该更改为 java:/comp/env/jdbc/MSSQLDS

  • 设置 JNDI 数据源以在 GWT 开发模式下在嵌入式 Jetty 服务器上运行的步骤如下。 (我以 mysql 数据源为例,但其他数据源的步骤相同)
  • 将 jetty-naming-*.jar、jetty-plus-*.jar 添加到项目构建路径,如下面的屏幕截图所示。可以使用位于/usr/share/jetty/lib 的 Jetty 库。可以在生产中使用其他 web 服务器,如 tomcat,它们没有添加到 WEB-INF/lib 目录中。如果 jetty 也用于生产环境,那么它们可能会被添加到 WEB-INF/lib 目录中。


  • 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 项目作为 Web 应用程序运行。你会得到 javax.naming.NoInitialContextException
  • 要纠正此问题,请转到运行配置并打开应用程序的运行配置。选择 Arguments 选项卡并将以下行添加到 VM Arguments

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

  • 运行配置的屏幕截图

    enter image description here

    保存设置并在开发模式下启动 webapp。

    关于gwt jetty jndi 查找失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5454421/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com