`

jetty快速开发时自实现提供jndi服务

 
阅读更多

jndi一般是由容器提供,或是启动第三方服务jar包启动。

 

由于我在使用jetty作为内嵌服务器快速开发时需要使用jndi提供datasource来连接数据库,于是就研究了下,自己简单实现提供一个jndi服务

 

使用以下代码就行了。想要使用jndi就启动init方法

 

 

class MyContextBuild implements InitialContextFactoryBuilder {
    private static HashMap<String, Object> map = new HashMap<String, Object>();

    public static void init() {
        try {
            NamingManager.setInitialContextFactoryBuilder(new MyContextBuild());
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }

    public InitialContextFactory createInitialContextFactory(Hashtable<?, ?> environment) throws NamingException {
        return new MyContextFactory();
    }

    public class MyContextFactory implements InitialContextFactory {
        public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
            return new MyContext();
        }
    }

    public class MyContext extends InitialContext {
        public MyContext() throws NamingException {
            super();
        }

        @Override
        public void unbind(String name) throws NamingException {
            map.remove(name);
        }

        @Override
        public Object lookup(String name) throws NamingException {
            return map.get(name);
        }

        @Override
        public void bind(String name, Object obj) throws NamingException {
            map.put(name, obj);
        }
    }
}

 

在启动jetty时顺便启动一下自己的jndi,搞定

 

 

 public static void main(String[] args) throws Exception {
        MyContextBuild.init();
        Context context = new InitialContext();
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setDatabaseName(DATASOURCE_DATABASE);
        dataSource.setPortNumber(DATASOURCE_PORT);
        dataSource.setUser(DATASOURCE_USERNAME);
        dataSource.setPassword(DATASOURCE_PASSWORD);
        dataSource.setEncoding(DATASOURCE_ENCODEING);

        String dataSourcePath = null;
        for (String url : DATASOURCE_URL) {
            try {
                dataSource.setServerName(url);
                dataSource.setConnectTimeout(500);
                dataSource.getConnection().close();
                dataSourcePath = url;
                break;
            } catch (Exception e) {
            }
        }
        context.bind(JNDI_NAME, dataSource);

       Server server = new Server(port);
        WebAppContext webContext = new WebAppContext(contenxtFileName, contextPath);
webContext.setClassLoader(Thread.currentThread().getContextClassLoader());
        server.setHandler(webContext);
        server.setStopAtShutdown(true);
        server.start();
        server.join();
    }
0
0
分享到:
评论

相关推荐

    Jetty嵌入式服务器的JNDI快速配置指南

    **Jetty嵌入式服务器的JNDI快速配置指南** Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,常被用于嵌入式环境,因为它可以方便地与应用程序集成,无需独立部署。JNDI(Java Naming and Directory ...

    jetty 服务器使用

    Jetty提供热部署功能,当检测到应用或配置文件变化时,可以自动重新加载。这对于开发环境特别有用,可以快速看到代码修改的效果。 11. **插件系统** Jetty的插件系统使得扩展服务器功能变得容易,例如添加对JSP、...

    jetty.rar(clipse/myeclipse/STS等开发工具的jetty插件-通用版本)

    - `jndilib`:可能是一些与Java Naming and Directory Interface (JNDI) 相关的库,用于提供服务发现和命名功能。 总的来说,Jetty插件极大地简化了开发过程中Web应用的测试和调试步骤,让开发者能够在IDE内快速...

    jetty-9.4.6

    在实际应用中,Jetty常被用于开发RESTful服务、微服务架构、移动后端、测试环境等,其小巧、快速和灵活的特性使得它在许多项目中成为首选的Java Web服务器。通过持续的维护和更新,Jetty保持了与Java和Web技术的同步...

    jetty.jar,jetty-sslengine.jar,jetty-util.jar

    这使得开发人员可以轻松地在Jetty上搭建安全的Web服务,满足诸如电子商务网站、银行系统等对安全性的高要求。 再者,jetty-util.jar是Jetty的一系列实用工具类库,提供了许多方便的辅助函数和数据结构,用于帮助...

    jetty内嵌到java代码启动

    - **JNDI**:可以配置Jetty以提供JNDI服务,便于应用中的服务发现和注入。 - **静态资源**:可以通过`DefaultHandler`或`ResourceHandler`处理静态文件。 6. **调试与日志** - 在开发阶段,可以通过设置日志级别...

    jetty指南书

    作为servlet容器,Jetty允许开发人员以对象的形式快速为独立的Java应用程序提供网络和web服务。Jetty的特点包括轻量级、高效、易于嵌入,这使得它在很多项目中成为首选。 2. **功能与特点**:Jetty支持HTTP、HTTPS...

    jetty所需jar包

    4. **jetty-servlets.jar**:除了基本的Servlet支持,Jetty还提供了一些预定义的Servlet实现,比如静态资源服务、WebSocket支持等。 5. **jetty-security.jar**:用于处理安全性和认证,包含Jaas登录服务、...

    jetty 插件

    2. **热部署**:当源代码发生变化时,Jetty插件可以自动检测并重新加载修改,实现热部署,提高开发效率。 3. **方便的配置**:通过插件配置文件(如`plugin.xml`),可以定制Jetty服务器的行为,例如设置端口、上...

    Jetty权威指南.pdf

    - **2.3.1 快速启动**:可以通过执行`java -jar start.jar`来快速启动Jetty服务。 - **2.3.2 停止服务**:通过`java -jar stop.jar`命令可以优雅地停止Jetty服务。 - **2.3.3 start.jar深入探讨**:`start.jar`是一...

    jetty指导书

    通过调用Jetty提供的API,可以在Java程序中启动和控制Jetty服务。 #### 十六、JEE服务器整合 **16.1 整合方案** Jetty可以与JEE服务器(如GlassFish)整合使用,以提供更丰富的企业级功能。 #### 十七、在开发...

    jetty6 指南书

    提供了如何在开发环境中高效使用Jetty的方法,以及如何确保应用程序的安全性,包括权限管理和加密通信。 9. **FAQ**: 解答了一些常见的问题,帮助用户解决实际操作中遇到的难题。 总的来说,Jetty6指南书是一本...

    Jetty中文手册

    如何使用Jetty开发 Jetty HelloWorld教程 Jetty和Maven HelloWorld教程 Jetty(6)入门 (www.itjungle.com) Jetty Start.jar 配置Jetty 如何设置上下文(Context Path) 如何知道使用了那些jar包 如何配置SSL 如何...

    jetty 6 指南书

    - **启动与停止**:通过java命令快速启动和停止Jetty服务,以及使用start.jar的深入解析。 - **Windows和Linux的启动关闭控制**:涉及系统变量设置、命令参数和配置文件的介绍。 - **我们可以学到什么**:引导...

    jetty-document

    如果项目使用Maven构建,可以在项目的pom.xml文件中添加Jetty插件,以实现集成开发环境中的快速部署和调试。 #### 三、深入理解Jetty配置 ##### 3.1 Jetty配置概述 配置Jetty涉及到多个方面,包括但不限于连接器...

    jetty 8.1.15 jar包

    Jetty提供了内置的安全管理器,可以设置角色和权限,实现基于角色的访问控制。同时,Jetty允许调整线程池大小、缓冲区配置等,以优化服务器性能。此外,Jetty还支持连接池和HTTP/2协议,进一步提升了性能。 总之,...

    run-jetty-run.rar

    "run-jetty-run.rar"是一个压缩包,包含了一系列文件和目录,这些内容是为在Eclipse集成开发环境中方便地运行和调试Jetty服务而设计的。 1. **plugin.xml**: 这个文件是Eclipse插件的核心配置文件,定义了插件的元...

    Jetty 9.4.6 jar包

    8. **扩展性**: Jetty提供了一系列插件,如JMX监控、JNDI支持、GZIP压缩等,可以根据需求进行选择和配置。 9. **日志与监控**: Jetty使用SLF4J进行日志记录,可以与各种日志框架集成,如Logback或Log4j。同时,可以...

    jetty-distribution-9.4.28.v20200408.zip

    7. **JNDI支持**:Java Naming and Directory Interface (JNDI) 提供了查找和绑定资源的能力,Jetty支持JNDI,方便应用访问全局的配置和服务。 8. **JAAS集成**:Jetty可以与Java Authentication and Authorization...

    eclipse中配置使用jetty调试web项目

    在Eclipse这个强大的Java开发...在实际开发中,根据项目需求,你可能还需要配置更多高级特性,如JNDI、连接池、SSL等,这些都是通过修改或扩展"jetty.xml"文件实现的。记住,理解和掌握配置文件的结构和语法是关键。

Global site tag (gtag.js) - Google Analytics