jndi调用时,各种应用服务器InitialContext的写法

调用ejb时,如果客户端和ejb不在同一个jvm,就要设置InitialContext,不同的应用服务器InitialContext写法也不同.
Context.INITIAL_CONTEXT_FACTORY:指定到目录服务的连接工厂
Context.PROVIDER_URL:目录服务提供者URL

//jboss:
Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"
Context.URL_PKG_PREFIXES, "org.jboss.naming"
Context.PROVIDER_URL, "localhost:1099"

//weblogic:
Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"
Context.PROVIDER_URL, "t3://localhost:7001"

//apusic(金蝶):
Context.INITIAL_CONTEXT_FACTORY, "com.apusic.jndi.InitialContextFactory"
Context.PROVIDER_URL, "rmi://localhost:6888"

//WebSphere:
Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"
Context.PROVIDER_URL, "iiop://localhost:900"


//J2EE  SDK(J2EE  RI):
Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory"
Context.PROVIDER_URL, "iiop://127.0.0.1:1050"

//SilverStream:
Context.INITIAL_CONTEXT_FACTORY, "com.sssw.rt.jndi.AgInitCtxFactory"
Context.PROVIDER_URL, "sssw://localhost:80"

//OC4J:
Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory"
Context.PROVIDER_URL, "ormi://127.0.0.1/"

//WAS5:
Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"
Context.PROVIDER_URL, "iiop://localhost:2809"

 

常用JNDI服务提供者连接工厂:
Filesystem:  Com.sun.jndi.fscontext.FSContextFactory或者com.sun.jndi.fscontext.RefFSContextFactory
LDAPv3:    Com.sun.jndi.ldap.LdapCtxFactory
NDS:     com.novell.naming.service.nds.NdsInitialContextFactory
NIS:     com.sun.jndi.nis.NISCtxFactory
RMI registry: com.sun.jndi.rmi.registry.RegistryContextFactory
IBM LDAP服务提供者:   com.ibm.jndi.LDAPCtxFactory
BEA 名字服务提供者:   weblogic.jndi.WLInitialContextFactory
JBOSS名字服务提供者:  org.jnp.interfaces.NamingContextFactory



Properties props=new Properties();
props.put(Context.PROVIDER_URL,"corbaloc::173.6.7.143:14500/NameService");
props.put("java.naming.factory.initial","com.inprise.j2ee.jndi.CtxFactory");
Context context = new InitialContext(props);
// Context context = new InitialContext();

Object ref = context.lookup("com/borland/examples/j2ee/hello/Hello");
HelloWorldHome home = (HelloWorldHome) javax.rmi.PortableRemoteObject.narrow(ref, HelloWorldHome.class);
hello = home.create();


转自:http://www.blogjava.net/mashiguang/archive/2008/07/14/214758.html

### 数据源配置概述 数据源(DataSource)作为 Java 应用程序中的核心组件之一,主要用于管理数据库连接池并提供统一的接口供应用程序调用。通过合理配置数据源,可以实现高效的数据访问和资源利用。 #### Spring Boot 中的数据源配置方法 在 Spring Boot 中,可以通过多种方式完成数据源的配置: 1. **基于属性文件的方式** 在 `application.properties` 或 `application.yml` 文件中指定数据源的相关参数即可自动装配到项目中。 对于 `application.properties` 配置如下: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 如果使用的是 YAML 格式的配置,则写法稍有不同: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver ``` 2. **手动创建 Bean 的方式** 当需要自定义数据源或者不满足默认配置,可以在配置类中显式声明 DataSource Bean。 ```java @Configuration public class DataSourceConfig { @Bean public DataSource dataSource() { HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase"); dataSource.setUsername("root"); dataSource.setPassword("password"); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); return dataSource; } } ``` 3. **通过 JNDI 查找数据源** 使用容器提供的 JNDI 功能来查找已经预定义好的数据源对象。这种方式常见于传统企业级应用服务器环境,例如 Tomcat 和 WebLogic。 ```java Context context = new InitialContext(); DataSource ds = (DataSource) context.lookup("java:/comp/env/jdbc/DMDB"); [^3] ``` 以上三种方式均能有效支持不同类型的应用场景需求[^1]。 ### 实现细节补充说明 - 数据源不仅限于数据库,还可以扩展至文件系统或其他存储媒介上[^2]; - 合理设置最大最小连接数、超间等参数有助于提升性能表现; ```java @Bean public DataSource dataSource() { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setInitialSize(5); druidDataSource.setMaxActive(20); druidDataSource.setMinIdle(5); druidDataSource.setMaxWait(60000); // 单位毫秒 druidDataSource.setTimeBetweenEvictionRunsMillis(60000); druidDataSource.setMinEvictableIdleTimeMillis(300000); druidDataSource.setValidationQuery("SELECT 1"); druidDataSource.setTestWhileIdle(true); druidDataSource.setTestOnBorrow(false); druidDataSource.setTestOnReturn(false); druidDataSource.setPoolPreparedStatements(true); druidDataSource.setMaxOpenPreparedStatements(20); try { druidDataSource.setFilters("stat,wall,log4j"); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } druidDataSource.setConnectProperties(properties); return druidDataSource; } ``` 上述代码片段展示了如何精细化调整 Druid 连接池的各项参数以适应高并发场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值