奔跑的码农_ 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
    关注

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

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

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格