jetty 配置jndi_使用Jetty设置JNDI(嵌入式)
jetty 配置jndi
我在開發(fā)工作區(qū)上運(yùn)行嵌入式Jetty,從而節(jié)省了一些惡性的編譯和部署周期。 我與Jetty的合作不多,易用性使我著迷于它。 我需要設(shè)置JNDI才能檢索與數(shù)據(jù)庫(kù)相關(guān)的活動(dòng)的連接池。 盡管某些地方有完整的文檔,但大多數(shù)都是分散的。 因此,本帖子旨在成為您通過(guò)Jetty設(shè)置JNDI的一站式服務(wù)。 如果沒(méi)有,請(qǐng)發(fā)表評(píng)論,我很樂(lè)意為您提供幫助。因此,首先讓我們看看如何設(shè)置Jetty以作為嵌入式服務(wù)器運(yùn)行。 我的eclipse項(xiàng)目的文件夾結(jié)構(gòu)如下:
etc文件夾將包含jetty所需的所有配置文件。 您可以從此處下載碼頭。 對(duì)于這個(gè)例子,我使用了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 |
對(duì)于我的示例,我已經(jīng)設(shè)置了mysql,因此mysql-connector jar也包含在我的庫(kù)路徑中。
將Jetty安裝的etc目錄中的所有文件復(fù)制到eclipse項(xiàng)目的etc目錄中。
為了啟用JNDI,我們首先需要包括jetty-plus。 您可以通過(guò)多種方式執(zhí)行此操作,例如將其作為運(yùn)行時(shí)參數(shù)提供,包括在WEB-INF中自己的jetty-env.xml中,或?qū)⑺璧膞ml代碼片段從jetty-plus.xml復(fù)制并粘貼到您的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>接下來(lái),您需要將與數(shù)據(jù)源相關(guān)的XML片段添加到j(luò)etty.xml中。 我已經(jīng)添加了mysql所需的代碼段。 對(duì)于任何其他數(shù)據(jù)庫(kù),請(qǐng)檢查此鏈接。
<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>現(xiàn)在我們已完成所有設(shè)置,您所需要做的就是在嵌入式環(huán)境中運(yùn)行碼頭。 以下代碼顯示了如何在嵌入式模式下作為主類的一部分運(yùn)行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();} }就是這樣。 現(xiàn)在,您可以查找從Jetty公開的數(shù)據(jù)源。 為了簡(jiǎn)便起見 ,我已經(jīng)使用Spring的JNDIObjectFactoryBean配置了它。 需要注意的重要方面是Jetty所需的jndi提供程序URL和初始上下文工廠條目。
<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并通過(guò)Spring的JNDI模板進(jìn)行訪問(wèn)。 我感興趣的另一件事是使用碼頭服務(wù)器進(jìn)行遠(yuǎn)程調(diào)試。 經(jīng)過(guò)一番搜索,我發(fā)現(xiàn)您需要在運(yùn)行時(shí)配置中包括以下內(nèi)容作為VM參數(shù)。
-Xdebug -Xnoagent -Xrunjdwp:transport = dt_socket,服務(wù)器= y,暫掛= n,地址= 8000
這將使您能夠在端口8000上進(jìn)行遠(yuǎn)程調(diào)試。如果有任何疑問(wèn),請(qǐng)務(wù)必發(fā)表評(píng)論,我將非常樂(lè)意為任何人提供幫助。 當(dāng)然,如果您確實(shí)看到任何錯(cuò)誤,也請(qǐng)留下答復(fù),再次感謝您:)。
參考:在My My Journey Through IT博客上,由我們的JCG合作伙伴 Dinuka Arseculeratne 通過(guò) Jetty(嵌入式)設(shè)置JNDI 。
翻譯自: https://www.javacodegeeks.com/2012/04/setting-up-jndi-with-jetty-embedded.html
jetty 配置jndi
總結(jié)
以上是生活随笔為你收集整理的jetty 配置jndi_使用Jetty设置JNDI(嵌入式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 盏组词语 盏组词语有哪些
- 下一篇: 如何从URL查询字符串获得/附加视图参数