0

タイプ Map の JNDI リソースを設定する Glassfish を使用しています。いくつかの Bean ファクトリを定義した後、コードでこのマップにアクセス (JNDI ルックアップ) できます。

Spring Boot を使用した埋め込み Tomcat テストでも同じことをしたいのですが、方法がわかりません。どこでも、ハッシュマップではなくJNDIデータソースを追加する方法を参照しているだけです。私はこのようなことを試みましたが、それは完全に間違っていると思います。

public TomcatEmbeddedServletContainerFactory tomcatFactory() {
     return new TomcatEmbeddedServletContainerFactory() {

        @Override
        protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
                Tomcat tomcat) {
            tomcat.enableNaming();
            return super.getTomcatEmbeddedServletContainer(tomcat);
        }
            @Override
            protected void postProcessContext(Context context) {
                ContextResource resource = new ContextResource();
                resource.setName("jndiname");
                resource.setType(Map.class.getName());
                // for testing only
                resource.setProperty("testproperty", "10");

                context.getNamingResources().addResource(resource);
            }
        };
    }


    @Bean(destroyMethod="")
    public Map jndiDataSource() throws IllegalArgumentException, NamingException {
        JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
        bean.setJndiName("jndiname");
        bean.setProxyInterface(Map.class);
        bean.setLookupOnStartup(false);
        bean.setResourceRef(true);
        bean.afterPropertiesSet();
        return (Map)bean.getObject();
    }

オブジェクト ファクトリのどこに渡せばよいかわかりません。組み込みのTomcatでそれはまったく可能ですか?

4

1 に答える 1