sql >> Databasteknik >  >> RDS >> Mysql

javax.naming.NoInitialContextException med mysql DataSource

Detta beror på att MysqlDataSource implementerar inte javax.naming.spi.InitialContextFactory gränssnitt.

Om du inte är i en container kan du använda rmi-registret. Något i stil med:

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;
}



  1. Förhindra att spara ändringar som kräver att tabellen återskapas negativa effekter

  2. Finns det ett annat sätt att implementera det här programmet utan att använda kapslad while-loop?

  3. Skapa en webbplats med MySQL

  4. mysql like%-frågan är långsam med fulltextindex