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();
}
分享到:
相关推荐
**Jetty嵌入式服务器的JNDI快速配置指南** Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,常被用于嵌入式环境,因为它可以方便地与应用程序集成,无需独立部署。JNDI(Java Naming and Directory ...
Jetty提供热部署功能,当检测到应用或配置文件变化时,可以自动重新加载。这对于开发环境特别有用,可以快速看到代码修改的效果。 11. **插件系统** Jetty的插件系统使得扩展服务器功能变得容易,例如添加对JSP、...
- `jndilib`:可能是一些与Java Naming and Directory Interface (JNDI) 相关的库,用于提供服务发现和命名功能。 总的来说,Jetty插件极大地简化了开发过程中Web应用的测试和调试步骤,让开发者能够在IDE内快速...
在实际应用中,Jetty常被用于开发RESTful服务、微服务架构、移动后端、测试环境等,其小巧、快速和灵活的特性使得它在许多项目中成为首选的Java Web服务器。通过持续的维护和更新,Jetty保持了与Java和Web技术的同步...
这使得开发人员可以轻松地在Jetty上搭建安全的Web服务,满足诸如电子商务网站、银行系统等对安全性的高要求。 再者,jetty-util.jar是Jetty的一系列实用工具类库,提供了许多方便的辅助函数和数据结构,用于帮助...
- **JNDI**:可以配置Jetty以提供JNDI服务,便于应用中的服务发现和注入。 - **静态资源**:可以通过`DefaultHandler`或`ResourceHandler`处理静态文件。 6. **调试与日志** - 在开发阶段,可以通过设置日志级别...
作为servlet容器,Jetty允许开发人员以对象的形式快速为独立的Java应用程序提供网络和web服务。Jetty的特点包括轻量级、高效、易于嵌入,这使得它在很多项目中成为首选。 2. **功能与特点**:Jetty支持HTTP、HTTPS...
4. **jetty-servlets.jar**:除了基本的Servlet支持,Jetty还提供了一些预定义的Servlet实现,比如静态资源服务、WebSocket支持等。 5. **jetty-security.jar**:用于处理安全性和认证,包含Jaas登录服务、...
2. **热部署**:当源代码发生变化时,Jetty插件可以自动检测并重新加载修改,实现热部署,提高开发效率。 3. **方便的配置**:通过插件配置文件(如`plugin.xml`),可以定制Jetty服务器的行为,例如设置端口、上...
- **2.3.1 快速启动**:可以通过执行`java -jar start.jar`来快速启动Jetty服务。 - **2.3.2 停止服务**:通过`java -jar stop.jar`命令可以优雅地停止Jetty服务。 - **2.3.3 start.jar深入探讨**:`start.jar`是一...
通过调用Jetty提供的API,可以在Java程序中启动和控制Jetty服务。 #### 十六、JEE服务器整合 **16.1 整合方案** Jetty可以与JEE服务器(如GlassFish)整合使用,以提供更丰富的企业级功能。 #### 十七、在开发...
提供了如何在开发环境中高效使用Jetty的方法,以及如何确保应用程序的安全性,包括权限管理和加密通信。 9. **FAQ**: 解答了一些常见的问题,帮助用户解决实际操作中遇到的难题。 总的来说,Jetty6指南书是一本...
如何使用Jetty开发 Jetty HelloWorld教程 Jetty和Maven HelloWorld教程 Jetty(6)入门 (www.itjungle.com) Jetty Start.jar 配置Jetty 如何设置上下文(Context Path) 如何知道使用了那些jar包 如何配置SSL 如何...
- **启动与停止**:通过java命令快速启动和停止Jetty服务,以及使用start.jar的深入解析。 - **Windows和Linux的启动关闭控制**:涉及系统变量设置、命令参数和配置文件的介绍。 - **我们可以学到什么**:引导...
如果项目使用Maven构建,可以在项目的pom.xml文件中添加Jetty插件,以实现集成开发环境中的快速部署和调试。 #### 三、深入理解Jetty配置 ##### 3.1 Jetty配置概述 配置Jetty涉及到多个方面,包括但不限于连接器...
Jetty提供了内置的安全管理器,可以设置角色和权限,实现基于角色的访问控制。同时,Jetty允许调整线程池大小、缓冲区配置等,以优化服务器性能。此外,Jetty还支持连接池和HTTP/2协议,进一步提升了性能。 总之,...
"run-jetty-run.rar"是一个压缩包,包含了一系列文件和目录,这些内容是为在Eclipse集成开发环境中方便地运行和调试Jetty服务而设计的。 1. **plugin.xml**: 这个文件是Eclipse插件的核心配置文件,定义了插件的元...
8. **扩展性**: Jetty提供了一系列插件,如JMX监控、JNDI支持、GZIP压缩等,可以根据需求进行选择和配置。 9. **日志与监控**: Jetty使用SLF4J进行日志记录,可以与各种日志框架集成,如Logback或Log4j。同时,可以...
7. **JNDI支持**:Java Naming and Directory Interface (JNDI) 提供了查找和绑定资源的能力,Jetty支持JNDI,方便应用访问全局的配置和服务。 8. **JAAS集成**:Jetty可以与Java Authentication and Authorization...
在Eclipse这个强大的Java开发...在实际开发中,根据项目需求,你可能还需要配置更多高级特性,如JNDI、连接池、SSL等,这些都是通过修改或扩展"jetty.xml"文件实现的。记住,理解和掌握配置文件的结构和语法是关键。