使用Jetty设置JNDI(嵌入式)

我在开发工作区上运行嵌入式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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交华为换机access配置_华为交换机Hybrid接口及基础配置

一、回顾VLANVLAN基本概念VLAN即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域(多个VLAN)的通信技术。VLAN内的主机间可以直接通信&#xff0c;而VLAN间不能直接互通&#xff0c;从而将广播报文限制在一个VLAN内。由于VLAN之间的隔离&#xff0c;所以一些类…

HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)

参考文献&#xff1a; http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下载地址 http://hc.apache.org/downloads.cgi Apache-》Projects-》HttpComponents 2.DownloadServlet 1 package com.servlet;2 3 import java.io.Buffer…

git push 的符号笔有什么用_如何同步多个 git 远程仓库

点击上方“后端技术精选”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;作者&#xff1a;taadismy.oschina.net/taadis/blog/3073220题外话&#xff0c;开发中遇到问题或者学习新技术时缺少交流环境&#xff0c;可以点击加入【后端技术交流群】日常需求以前…

2、Spring的 IoC详解(第一个Spring程序)

Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器框架。在这句话中重点有两个&#xff0c;一个是IoC&#xff0c;另一个是AOP。今天我们讲第一个IoC。 一. IoC理论的背景 我们都知道…

js 获取father_(原创)Node.JS实战26:强大的工作池。收藏吧!你一定会用的到。...

在实际项目中&#xff0c;如果遇到需要大计算量的操作&#xff0c;按需fork&#xff08;分叉&#xff09;其实不是一个好的选择。因为fork的子进程也是V8&#xff08;NodeJS的核心引擎&#xff09;的新实例&#xff0c;每创建一个新实例&#xff0c;需要约30毫秒启动时间&#…

修复steam服务器失败,steam服务器链接失败

steam服务器链接失败 内容精选换一换当NTP服务器异常时产生该告警。当NTP服务器异常消除时&#xff0c;该告警恢复。主OMS节点配置的NTP服务器异常&#xff0c;可能会导致主OMS节点与外部服务器不能同步时间&#xff0c;集群时间可能会产生飘移。NTP服务器网络异常。与NTP服务器…

将jar添加到发布目录_第32批免购置税新能源车型目录发布;通用BEV3平台将入华...

1、第32批免购置税新能源车型目录发布&#xff0c;几何X/理想ONE等283款车型入选6月2日&#xff0c;工信部发布《免征车辆购置税的新能源汽车车型目录(第三十二批)》&#xff0c;共有283款新能源车型入选。其中新能源乘用车方面包括&#xff0c;一汽大众Q2L/e-BORA、东风风神E7…

HPROF –内存泄漏分析教程

本文将为您提供有关如何通过生成和分析Sun HotSpot JVM HPROF堆转储文件来分析JVM内存泄漏问题的教程。 一个现实的案例研究将用于此目的&#xff1a;Weblogic 9.2内存泄漏影响Weblogic Admin服务器。 环境规格 Java EE服务器&#xff1a;Oracle Weblogic Server 9.2 MP1 中…

mq服务器与客户端消息同步,使用 ActiveMQ 实现JMS 异步调用

目录简介服务之间的同步调用&#xff0c;可以使用 HTTP 或 RPC 来完成&#xff0c;但并非所有的调用都需要同步&#xff0c;有些场景下&#xff0c;当客户端调用服务端时&#xff0c;并不需要等待服务端做出响应&#xff0c;此时就应该使用异步调用。异步调用的常用方式是基于 …

多个数字数组_七个问题帮助初学者深入理解Java数组

短文涨姿势&#xff0c;看了不白看&#xff0c;不关注等啥&#xff1f;几乎所有的高级语言当中&#xff0c;都提供了一种叫做”数组”的东西&#xff0c;Java语言当然也不例外。我们通过数组可以很方便的存储和管理一组数据。因为在Java语言当中使用数组非常的方便&#xff0c;…

java 异常练习题1

建立exception包&#xff0c;建立Bank类&#xff0c;类中有变量double balance表示存款,Bank类的构造方法能增加存款&#xff0c;Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数&#xff0c;抛出Nag…

大话设计模式读书笔记--6.原型模式

简单的复制粘贴极有可能造成重复代码的灾难, 但是java中提供了克隆的功能, 如果一个对象创建过程复杂,又要频繁使用, 在初始化信息不发生变化的情况下,应当采取克隆而不是new一个对象 定义 原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 也就是说,…

Java 7#8:测试台上的NIO.2文件通道

关于新JDK 7功能的另一篇博客文章。 这次我正在写有关新的AnsynchronousFileChannel类的文章。 我将在两周内深入分析新的JDK 7功能&#xff0c;并决定连续编号我的帖子。 只是为了确保我不会感到困惑&#xff1a;-)这是我关于Java 7的第七篇文章&#xff08;我承认–碰巧–这也…

5页面title样式修改_认识html:实现网站页面是这么简单的一回事

互联网时代人们通过上网浏览信息&#xff0c;打开浏览器上网看到丰富的图文、视频、音乐等多媒体信息&#xff0c;一系列信息反馈和视觉冲击之后&#xff0c;您有没有想过&#xff0c;互联网这么发达的时代&#xff0c;您觉得花一点点时间学会做个网站页面不真香&#xff1f;概…

iOS指南针

前言&#xff1a; 这个小项目使用到了CoreLocation框架里面的设备朝向功能&#xff0c;对CoreLocation感兴趣的可以翻一下之前的文章 在另一个博客站有朋友发现一个尴尬的问题&#xff08;图片的东西2个方向是不对的&#xff09;&#xff0c;原谅我的大意&#xff0c;赶时间就直…

jq的链式调用.end();

jq的链式调用.end(); 先上code <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>li{list-style: none;width: 100px;height:20px;border:1px solid #ff0000;display: …

程序如何在两个gpu卡上并行运行_深度学习分布式训练相关介绍 - Part 1 多GPU训练...

本篇文章主要是对深度学习中运用多GPU进行训练的一些基本的知识点进行的一个梳理文章中的内容都是经过认真地分析&#xff0c;并且尽量做到有所考证抛砖引玉&#xff0c;希望可以给大家有更多的启发&#xff0c;并能有所收获介绍大多数时候&#xff0c;梯度下降算法的训练需要较…

系统英伟达gpu驱动卸载_绕过CPU,英伟达让GPU直连存储设备

英伟达最近发布了一个新的GPUDirect Storage&#xff0c;暂且叫做GPU直连存储&#xff0c;让GPU直接连到NVMe存储设备上。这一方案用到了RDMA设备来把数据从闪存存储转移到GPU本地的内存里&#xff0c;无需经过CPU还有系统内存。如果这一举措顺利的话&#xff0c;英伟达就能摆脱…

嘲弄和存根–了解Mockito的测试双打

介绍 我遇到的一件事是使用模拟框架的团队假设他们在模拟。 他们并不知道Mocks只是Gerard Meszaros在xunitpatterns.com上归类的“测试双打”之一。 重要的是要意识到每种类型的测试双精度在测试中都扮演着不同的角色。 用与您需要学习不同模式或重构的方式相同&#xff0c;您…

【代码笔记】iOS-首页3张图片变化

一&#xff0c;效果图。 二&#xff0c;工程图。 三&#xff0c;代码。 RootViewController.h #import <UIKit/UIKit.h>interface RootViewController : UIViewController {NSTimer *timer;UIImageView *imageView1;UIImageView *imageView2;UIImageView *imageView3;UIV…