带有嵌入式 Tomcat 的 Jndi Mongodb Spring Boot,[重复]

Posted

技术标签:

【中文标题】带有嵌入式 Tomcat 的 Jndi Mongodb Spring Boot,[重复]【英文标题】:Jndi Mongodb Spring boot with embedded Tomcat, [duplicate] 【发布时间】:2018-08-08 09:39:27 【问题描述】:

带有嵌入式 Tomcat 的 Jndi Mongodb Spring boot,

无法加载 JDBC 驱动程序类“mongodb.jdbc.MongoDriver”。相反,我已经在依赖项中添加了 mongodb-java-driver ?

@Bean
public TomcatEmbeddedServletContainerFactory tomcatFactory() 
    return new TomcatEmbeddedServletContainerFactory() 

        protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) 
            tomcat.enableNaming();
            return super.getTomcatEmbeddedServletContainer(tomcat);
        

        @Override
        protected void postProcessContext(Context context) 
            ContextResource mongoResource = new ContextResource();
            mongoResource.setName("jdbc/Mongodb");
            mongoResource.setType(DataSource.class.getName());
            mongoResource.setProperty("driverClassName", "mongodb.jdbc.MongoDriver");
            mongoResource.setProperty("url", "jdbc:mongo://localhost:27017/skywriter");
            mongoResource.setProperty("username", "skywriter");
            mongoResource.setProperty("password", "skywriter");
            context.getNamingResources().addResource(mongoResource);

        

    ;


@Bean(destroyMethod = "")
@Primary
public DataSource mongoJNDIDataSource() throws IllegalArgumentException, NamingException 
    JndiObjectFactoryBean mongodb = new JndiObjectFactoryBean();
    mongodb.setJndiName("java:comp/env/jdbc/Mongodb");
    mongodb.setProxyInterface(DataSource.class);
    mongodb.setLookupOnStartup(false);
    mongodb.afterPropertiesSet();
    return (DataSource) mongodb.getObject();

【问题讨论】:

请不要发布代码图片,因为它们可能难以阅读且不可搜索。将代码的相关部分作为文本添加到问题中。 【参考方案1】:

您需要包含包含 JDBC 驱动程序的 JAR。您使用的是哪个供应商?不是官方mongodb-java-driver的一部分。

【讨论】:

哪个 JAR 用于 mongodb 驱动程序?

以上是关于带有嵌入式 Tomcat 的 Jndi Mongodb Spring Boot,[重复]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将数据源添加到嵌入式 tomcat 7 中的 JNDI 上下文

运行带有嵌入式容器和 JNDI 的 Spring Boot 应用程序

如何为 tomcat 6 及其部署的 webapps 正确配置 JNDI?

带有纯 JDBC-JNDI:javax.naming.NameNotFoundException 的 Tomcat 8.5:名称 [jdbc/KDB] 未绑定在此上下文中。找不到 [jdbc]

骆驼路由输入端点的 JBoss 嵌入式 MQ 的 jndi 查找问题

带有嵌入式类型查询的 Mongo/DataNucleus/JPA 给出:找不到(部分)的类型...因为符号没有类型;隐式变量?