奔跑的码农_ 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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵