Я пытаюсь настроить URL-адрес службы конечной точки (которую я буду вызывать из моих остальных служб, написанных при весенней загрузке), используя JNDI на встроенном сервере Tomcat. Однако я не в состоянии сделать это, поскольку это бросает исключение класса. Невозможно привести от Прокси к URL
Исключение:
Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy51 cannot be cast to java.net.URL
at io.javabrains.boot.ApplicationStarter.jndiDataSource(ApplicationStarter.java:85) [classes/:na]
at io.javabrains.boot.ApplicationStarter$$EnhancerBySpringCGLIB$$59e10b3.CGLIB$jndiDataSource$0(<generated>) ~[classes/:na]
at io.javabrains.boot.ApplicationStarter$$EnhancerBySpringCGLIB$$59e10b3$$FastClassBySpringCGLIB$$90c9344c.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
@Bean
public TomcatServletWebServerFactory servletContainerV2() {return new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer
getTomcatWebServer(org.apache.catalina.startup.Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatWebServer(tomcat);
}
@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName("jdbc/myJndiResource");
resource.setType(URL.class.getName());
URL url = "www.google.com"
resource.setProperty("url",url)
context.getNamingResources().addResource(resource);
}
=============================================== ===========
Получение contextResource с использованием JNDIObjectFactoryBean
@Bean
public URL jndiDataSource() throws IllegalArgumentException, NamingException {
JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
bean.setJndiName("java:/comp/env/jdbc/myJndiResource");
bean.setExpectedType(URL.class);
bean.setLookupOnStartup(false);
bean.afterPropertiesSet();
URL url = (URL)bean.getObject();
}
Я смогу получить URL-адрес из jndiDataSource, который я могу внедрить в мои служебные бины во время выполнения в зависимости от среды, такой как dev, staging и т. Д.