Следующий код работает нормально во время развертывания, даже когда я получаю объект Datasouce и регистрирую его в контексте:
Класс 1:
@ApplicationScoped
public class ApplicationCamelContext extends DefaultCamelContext {
private static final Logger LOGGER = LoggerFactory.getLogger( ApplicationCamelContext.class.getName() );
@Resource(lookup = "java:/datasources/IntegratorMasterdataDS")
DataSource masterdata;
@PostConstruct
void customize() throws SQLException {
LOGGER.info("Started ApplicationCamelContext: customize");
setName("acm-ftp-delievery");
getShutdownStrategy().setTimeout(2L);
SimpleRegistry registry = new SimpleRegistry();
Connection c = masterdata.getConnection();
Statement m = c.createStatement();
ResultSet rs = m.executeQuery("SELECT * FROM EMPLOYEE");
while(rs.next()) {
System.out.println(""+ rs.getString(1));
break;
}
registry.put("masterdata", masterdata);
setRegistry(registry);
LOGGER.info("Shutdown ApplicationCamelContext: customize");
}
}
Класс 2 - это ROute Builder: просто псевдокод здесь, я доступ к мастер-данным, которые я зарегистрировал, но получил NPE
public class ApplicationRoutesBuilder extends RouteBuilder {
configure{
from ("jdbc:masterdata")
}
}
При попытке доступа к jdb c выдается исключение нулевого указателя:
Исключение:
2020-03-06 12:20:27,219 ERROR [CCM_ROUTE] (Camel (ccm-ftp-delievery) thread #1 - timer://ccmdelievery) Exchange[
, Id: ID-alq-esb-app01-unix-cosng-net-1583493465421-1-3
, ExchangePattern: InOnly
, Properties: {CamelCreatedTimestamp=Fri Mar 06 12:20:27 CET 2020, CamelExceptionCaught=java.lang.NullPointerException, CamelExternalRedelivered=false, CamelFailureEndpoint=jdbc://masterdata?outputClass=com.evry.integrator.Employee, CamelFailureRouteId=route2, CamelFatalFallbackErrorHandler=[route2], CamelMessageHistory=[DefaultMessageHistory[routeId=route1, node=log1], DefaultMessageHistory[routeId=route1, node=to1], DefaultMessageHistory[routeId=route2, node=log2], DefaultMessageHistory[routeId=route2, node=log3], DefaultMessageHistory[routeId=route2, node=setBody1], DefaultMessageHistory[routeId=route2, node=to2], DefaultMessageHistory[routeId=route2, node=transform1], DefaultMessageHistory[routeId=route2, node=error-exception-log]], CamelTimerCounter=2, CamelTimerFiredTime=Fri Mar 06 12:20:27 CET 2020, CamelTimerName=ccmdelievery, CamelTimerPeriod=160000, CamelToEndpoint=log://CCM_ROUTE?level=ERROR&maxChars=500000&multiline=true&showBody=false&showBodyType=false&showCaughtException=true&showException=true&showExchangeId=true&showHeaders=true&showProperties=true&showStackTrace=true}
, Headers: {breadcrumbId=ID-alq-esb-app01-unix-cosng-net-1583493465421-1-3, CamelJdbcColumnNames=[LOC_LOCATIONNAME, ORGSTR_UNITID, LOCATIONID, CM_COMPANYNAME, MOBILEPHONE, UNITID, LEADER_USERID, FIRSTNAME, EMAIL, ENDDATE, LEADERLEVEL, EMPLOYMENTTYPE, IMAGEPROFILE, COUNTRY, LASTNAME, USERID, MANAGER, COMPANYID, ORG_UNITNAME], firedTime=Fri Mar 06 12:20:27 CET 2020}
, CaughtExceptionType: java.lang.NullPointerException, CaughtExceptionMessage: null, StackTrace: java.lang.NullPointerException
at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:1738)
at org.apache.camel.util.ReflectionInjector.newInstance(ReflectionInjector.java:32)
at org.apache.camel.impl.DefaultInjector.newInstance(DefaultInjector.java:45)
at org.apache.camel.cdi.CdiCamelInjector.lambda$newInstance$0(CdiCamelInjector.java:39)
at java.util.Optional.orElseGet(Optional.java:267)
at org.apache.camel.cdi.CdiCamelInjector.newInstance(CdiCamelInjector.java:39)
at org.apache.camel.component.jdbc.JdbcProducer.newBeanInstance(JdbcProducer.java:369)
at org.apache.camel.component.jdbc.JdbcProducer.extractRows(JdbcProducer.java:341)