我在开发工作区上运行嵌入式Jetty,从而节省了一些编译和部署恶性循环的时间。 我与Jetty的合作不多,易用性使我着迷于它。 我需要设置JNDI才能检索与数据库相关的活动的连接池。 尽管某些地方有完整的文档,但大多数都是分散的。 因此,本帖子旨在成为您通过Jetty设置JNDI的一站式服务。 如果没有,请务必发表评论,我很乐意为您提供帮助。

因此,首先让我们看看如何设置Jetty以作为嵌入式服务器运行。 我的eclipse项目的文件夹结构如下:

etc文件夹将包含jetty所需的所有配置文件。 您可以从此处下载码头。 对于这个例子,我使用了jetty-6.1.26。

包括来自给定文件夹位置的以下jar;

LIB jetty-xxxx.jar,jetty-util-xxxx.jar,servlet-api-xxjar
lib / plus jetty-plus-xxxx.jar
lib /命名 jetty-naming-xxxx.jar

对于我的示例,我已经设置了mysql,因此mysql-connector jar也包含在我的库路径中。

将Jetty安装的etc目录中的所有文件复制到eclipse项目的etc目录中。

为了启用JNDI,我们首先需要包括jetty-plus。 您可以通过多种方式执行此操作,例如以arun-timeargument的形式提供它,包括将其包含在WEB-INF中自己的jetty-env.xml中,或者将所需的xml代码片段从jetty-plus.xml复制并粘贴到您的jetty.xml。 我选择了后者。 因此,我在jetty.xml中包含了以下代码段;

<Array id="plusConfig" type="java.lang.String"><Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item><Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item><Item>org.mortbay.jetty.plus.webapp.Configuration</Item><Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item><Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item></Array>
<call name="addLifeCycle"><arg><new class="org.mortbay.jetty.deployer.WebAppDeployer"><set name="contexts"><ref id="Contexts"></ref></set><set name="webAppDir"><systemproperty default="." name="jetty.home">/webapps</systemproperty></set><set name="parentLoaderPriority">false</set><set name="extract">true</set><set name="allowDuplicates">false</set><set name="defaultsDescriptor"><systemproperty default="." name="jetty.home">/etc/webdefault.xml</systemproperty></set><set name="configurationClasses"><ref id="plusConfig"></ref></set></new></arg>
</call>

接下来,您需要将与数据源相关的XML片段添加到jetty.xml中。 我已经添加了mysql所需的代码段。 对于任何其他数据库,请检查此链接。

<New id="myds" class="org.mortbay.jetty.plus.naming.Resource"><Arg>jdbc/MySQLDS</Arg><Arg><New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"><Set name="Url">jdbc:mysql://localhost:3306/test</Set><Set name="User">root</Set><Set name="Password">password</Set></New></Arg>
</New>

现在我们已经完成了所有设置,您所需要做的就是在嵌入式环境中运行码头。 以下代码显示了如何在嵌入式模式下作为主类的一部分运行Jetty;

import java.io.File;import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.jetty.handler.HandlerList;
import org.mortbay.jetty.webapp.WebAppContext;
import org.mortbay.xml.XmlConfiguration;public class JettyTest {public static void main(String[] args) throws Exception {Server jetty = new Server();String[] configFiles = {"etc/jetty.xml"};for(String configFile : configFiles) {XmlConfiguration configuration = new XmlConfiguration(new File(configFile).toURI().toURL());configuration.configure(jetty);}WebAppContext appContext = new WebAppContext();appContext.setContextPath("/myapp");File rd = new File("path_to_your_war_file");appContext.setWar(rd.getAbsolutePath());HandlerList handlers = new HandlerList();handlers.setHandlers(new Handler[]{ appContext, new DefaultHandler()});jetty.setHandler(handlers);jetty.start();}
}

就是这样。 现在,您可以查找Jetty公开的数据源。 为了简便起见 ,我已经使用Spring的JNDIObjectFactoryBean配置了它。 要注意的一个重要方面是jty提供商URL和Jetty所需的初始上下文工厂条目。

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"><property name="environment"><props><prop key="java.naming.factory.initial">org.mortbay.naming.InitialContextFactory</prop><prop key="java.naming.provider.url">org.mortbay.naming</prop></props></property></bean><bean id="jndiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiTemplate"><ref bean="jndiTemplate"/></property><property name="jndiName"><value>jdbc/MySQLDS</value></property></bean>

这样,您便拥有了配置JNDI并通过Spring的JNDI模板进行访问所需的全部功能 。 我感兴趣的另一件事是使用码头服务器进行远程调试。 经过一番搜索后,我发现您需要在运行时配置中包含以下内容作为VM参数。

-Xdebug -Xnoagent -Xrunjdwp:transport = dt_socket,服务器= y,暂挂= n,地址= 8000

这将使您能够在端口8000上远程调试应用程序。如果有任何疑问,请务必发表评论,我将非常乐意为任何人提供帮助。 当然,如果您确实看到任何错误,也请留下答复,再次感谢您:)。

参考:在My My Journey Through IT博客上,由我们的JCG合作伙伴 Dinuka Arseculeratne 通过 Jetty(嵌入式)设置JNDI 。

翻译自: https://www.javacodegeeks.com/2012/04/setting-up-jndi-with-jetty-embedded.html

使用Jetty设置JNDI(嵌入式)相关推荐

  1. jetty 配置jndi_使用Jetty设置JNDI(嵌入式)

    jetty 配置jndi 我在开发工作区上运行嵌入式Jetty,从而节省了一些恶性的编译和部署周期. 我与Jetty的合作不多,易用性使我着迷于它. 我需要设置JNDI才能检索与数据库相关的活动的连接 ...

  2. 关于Jboss/Tomcat/Jetty的JNDI定义123

    貌似有段时间没来这里忽悠了,今天抽空接着忽悠下这三个服务器配置JNDI时的一些异同点并提点自己的建议. Jboss 4 Jboss中配置JNDI最常见的就是在配置数据源的时候,在server/defa ...

  3. Jetty实战之 嵌入式Jetty运行web app

    Jetty实战之 嵌入式Jetty运行web app 博客分类: 应用服务器 jettywar  转载地址:http://blog.csdn.net/kongxx/article/details/72 ...

  4. jetty设置双向ssl_在Jetty中设置SSL

    jetty设置双向ssl 当您必须快速启用SSL并陷入困境时,您是否遇到了问题:-( 你并不孤单,我将分享我的痛苦和一些学习. 我将分享在码头上启用SSL的步骤. 警告:仅将以下说明用于开发人员设置和 ...

  5. 如何在Tomcat中设置JNDI数据库连接池-Spring教程示例

    在Spring和Tomcat中设置JNDI数据库连接池非常容易. Tomcat服务器文档提供了有关如何在Tomcat 5.6或7中设置连接池的足够信息.在这里,我们将结合使用Tomcat 7和Spri ...

  6. Jetty的JNDI数据源

    一. 此处绑定的数据源是以 DBCP 为实现.首先必须将数据库驱动(这里用了MYSQL数据库)和DBCP所需要的 Jar 包复制到 Jetty 根目录的 lib 目录下.DBCP主要需要以下3个文件: ...

  7. jetty 通过配置文件嵌入式启动web服务

    定义 jetty.xml 启动文件 <?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty ...

  8. java socket 设置 ttl_嵌入式 socket编程设置TTL

    #include #include int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); in ...

  9. 使用Maven,Jetty和Tomcat在嵌入式容器中运行Java Web应用程序

    在开发Java Web应用程序时,从"真实"环境中获得快速反馈非常实用. 在本文中,我将探讨如何在嵌入式容器Jetty或Tomcat中运行带有Maven的Java Web应用程序. ...

最新文章

  1. 用Python爬取42年数据,告诉你高考有多难!
  2. 001PHP文件处理——文件处理disk_total_space disk_free_space basename dirname file_exists filetype...
  3. UVA 10815 Andy's First Dictionary(STL: set)
  4. boost::signals2模块连接扩展槽的示例程序,使用信号的 connect_extended 和 extended_slot_type
  5. 岭南师范C语言程序设计真题_2021南京师范大学现代教育技术考研经验分享
  6. Java 非小数BigDecimal转换为Integer
  7. 乐山计算机学校搬迁,【骨头再次发贴】谈谈新校区。
  8. 苹果被指乏力上游另寻“新欢”
  9. 状态机finite-state machine学习笔记1
  10. 一本书学会可视化设计 pdf_【推荐给设计师看的11本书】电子版PDF
  11. 用Python做一个无限弹窗
  12. C/C++外卖点餐管理程序
  13. 【Unity编辑器扩展实践】、扩展Hierarchy菜单
  14. 如何培养员工的团队合作精神
  15. js抓取今日头条文章
  16. Java 格式化xml字符串
  17. cousins什么意思_cousin是什么意思_cousin的翻译_音标_读音_用法_例句_爱词霸在线词典...
  18. 数据结构 图(一)丛林中的路
  19. 网络编程之编写LSP进行Winsock API监控拦截或LSP注入
  20. Java 解二元一次方程组

热门文章

  1. Linux NAT网络连接权威指南
  2. 我的控制反转,依赖注入和面向切面编程的理解
  3. java流写入数据库_成为Java流大师–第4部分:数据库流
  4. rpc结构错误_结构性错误
  5. 设计模式 原型模式_创新设计模式:原型模式
  6. okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全
  7. java 拼图_拼图项目的诅咒:为什么Java 9一遍又一遍地延迟?
  8. 应行家算法_一些行家技巧和窍门
  9. jvm ide_通过微调JVM Garbage Collector减少Java IDE滞后
  10. react api_使用React流API将Akka流与rxJava结合在一起