当前位置: 首页 > 面试题库 >

javax.naming.NoInitialContextException与mysql数据源

公冶高义
2023-03-14
问题内容

尝试连接到MySQL数据库

MysqlDataSource mysqlDs = new MysqlDataSource();
Properties prop = new Properties();
String mysqlDataSourceDriver = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource";  
Properties properties = new Properties();  
properties.put(Context.INITIAL_CONTEXT_FACTORY, mysqlDataSourceDriver); 
properties.put(Context.PROVIDER_URL , "jdbc:mysql://localhost:3306/database");
Context ctx = new InitialContext(prop);
ctx.bind("jdbc/wczasy", mysqlDs);

和堆栈跟踪:

javax.naming.NoInitialContextException: Need to specify class name in environment or     system property, or as an applet parameter, or in an application resource file:      java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:344)
at javax.naming.InitialContext.bind(InitialContext.java:419)
at src.wczasy.database.Connector.connect(Connector.java:53)
at src.wczasy.Wczasy.main(Wczasy.java:10)

由行引起:ctx.bind(“ jdbc / wczasy”,mysqlDs); 我被困住了,有人可以帮我吗?谢谢。


问题答案:

这是因为MysqlDataSource未实现javax.naming.spi.InitialContextFactory接口。

如果您不在容器中,则可以使用rmi注册表。就像是:

try{
  startRegistry();
  InitialContext context = createContext();
  MysqlDataSource mysqlDs = new MysqlDataSource();
  context.rebind("jdbc/wczasy", mysqlDs);
} catch (Exception e) {
  System.out.println("Error while binding: " + e.getMessage());
  e.printStackTrace();
}


private static void startRegistry() throws RemoteException {
  LocateRegistry.createRegistry(1099);
  System.out.println("RMI registry ready.");
}

private static InitialContext createContext() throws NamingException {
  Properties env = new Properties();
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");
  env.put(Context.PROVIDER_URL, "rmi://localhost:1099");
  InitialContext context = new InitialContext(env);
  return context;
}


 类似资料:
  • 我已经安装了Python版本3.4。0,我想用MySQL数据库做一个项目。我下载并尝试安装MySQLdb,但在这个版本的Python中没有成功。 有什么建议可以帮助我解决这个问题并正确安装吗?

  • 问题内容: 顾名思义,“ javax.naming.NoInitialContextException”在非技术术语中意味着什么?有什么一般性建议可以解决它? 编辑(从控制台): 问题答案: 基本上,这意味着该应用程序要执行一些“命名操作”(例如,JNDI或LDAP查找),并且它没有足够的可用信息来创建与目录服务器的连接。作为异常状态的文档, 当无法创建初始上下文实现时,将引发此异常。Initia

  • 问题内容: 尝试将数据从平面文件数据库转储加载到新表时遇到权限错误。我知道文件和表的架构相同,因此尝试调整权限。我还应该尝试什么? 问题答案: 这是 MySQL论坛上的一个线程,对此进行了讨论。 答案是肯·塔瑟尔(Ken Tassell)发布的 使用以下命令解决了问题:

  • 我使用的是ubuntu系统和Mysql 8.0。我试图用jdbc类连接数据库,但出现了一个错误,尽管我添加了mysql连接器。jar文件, 我在下面提到的错误-- JAVAlang.module。FindException:读取模块:/home/surya/eclipse workspace/Advancedjava/bin时出错,原因是:java。lang.module。InvalidModul

  • 本文向大家介绍nodeJS与MySQL实现分页数据以及倒序数据,包括了nodeJS与MySQL实现分页数据以及倒序数据的使用技巧和注意事项,需要的朋友参考一下 大家在做项目时肯定会遇到列表类的数据,如果在前台一下子展示,速度肯定很慢,那么我们可以分页展示,比如说100条数据,每10条一页,在需要的时候加载一页,这样速度肯定会变快了。 那么这里我给大家介绍如何在nodejs环境中用mysql实现分页

  • im试图创建一个新的数据源,并从java代码中“查找”。首先,我创建了jboss-as-7.1.0.final\modules\com\mysql\main文件夹,并复制到其中的2个文件。mysql-connector-java-5.1.14-bin和module.xml My module.xml包含 其次,我在文件standalone.xml中添加了这个... 无论如何,当我启动我的jboss