奔跑的码农_ 2017-04-01 03:02 采纳率: 100%
浏览 1219
已采纳

Hive 使用java代码获取数据源的时候报错求大神解决(jndi)

Hive 使用jndi方式已经在tomcat配置文件中配置好
**这个是异常信息

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.lookup(InitialContext.java:411)
    at sunline.hive.utils.HiveJNDI.getConnection(HiveJNDI.java:29)
    at sunline.hive.utils.HiveJNDI.main(HiveJNDI.java:37)

这个是java代码(我想在java代码中获取数据源)

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class HiveJNDI {
    public static Connection getConnection()throws Exception{
 
        /*Properties properties=new Properties();
        properties.setProperty("java.naming.factroy.initial","org.jnp.interfaces.NamingContextFactory");
        properties.setProperty("java.naming.provider.url", "localhost:8080");*/
        InitialContext context = new InitialContext();
        DataSource envCtx = (DataSource) context.lookup("java:comp/env/hive/datasource");
      
            
        
        return envCtx.getConnection();
    }
    public static void main(String[] args) {
        try {
            Statement state = getConnection().createStatement();
            String sql="select*from tmp_ods_web_vhlclm_ic";
            ResultSet query = state.executeQuery(sql);
            while(query.next()){
                System.out.println(query.getString(1));
            }
        } catch (SQLException e) {
            
            e.printStackTrace();
        } catch (Exception e) {
            
            e.printStackTrace();
        }
    }
}

这个是tomcat 配置文件代码(这里因为我需要连接mysql数据源,与hive数据源,两个同时配置是否会有影响?name不同即可吗?)

                 driverClassName="org.apache.hive.jdbc.HiveDriver"
                  password="hive"
               username="hive" 
               maxWait="10000" 
               maxIdle="30" 
               maxActive="100" 
               type="javax.sql.DataSource" 
               auth="Container" 
               name="hive/datasource"/>

  • 写回答

1条回答 默认 最新

  • 奔跑的码农_ 2017-04-01 05:50
    关注

    是悬赏的太少吗?为什么没有人哎

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Qt4代码实现下面的界面
  • ¥15 prism提示我reinstall prism 如何解决
  • ¥15 asp.core 权限控制怎么做,需要控制到每个方法
  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码