Pivotal Cloud Foundry (PCF) spring 引导应用程序无错误地停止工作
Pivotal Cloud Foundry (PCF) spring boot application stops working without error
我有一个 spring 启动应用程序,在本地运行良好。使用 Postman 发送 JSON 字符串并成功完成请求。
我将应用程序部署到我们的开发 PCF 环境中。使用该服务的应用程序成功调用它。在服务日志中,它正确识别了要使用的策略并且工作正常。然后它应该调用 DAO,但没有任何反应。没有错误,在调用任何数据库操作之前 DAO 中没有日志记录语句。它就停止了。
已经开发和部署了 2 个其他应用程序来使用此服务,它们运行良好。这是服务停止工作的区域:
@Component
public class LoadStrategy implements CloseStrategy {
private static final Logger LOGGER = LoggerFactory.getLogger(LoadStrategy.class);
private LoadDao loadDao;
private MapperTranslator<Map<String, Object>, CloseRequest> mapperTranslatorToInputStream;
private MapperTranslator<CloseResponse, Map<String, Object>> mapperTranslatorToCloseTrailerResponse;
@Autowired
public Load Strategy(LoadDao loadDao,
@Qualifier("loadRequestMapper")MapperTranslator<Map<String, Object>, CloseRequest> mapperTranslatorToInputStream,
@Qualifier("loadResponseMapper")MapperTranslator<CloseResponse, Map<String, Object>> mapperTranslatorToCloseResponse) {
this.loadDao = loadDao;
this.mapperTranslatorToInputStream = mapperTranslatorToInputStream;
this.mapperTranslatorToCloseResponse = mapperTranslatorToCloseResponse;
}
public CloseResponse close(CloseRequest input) {
LOGGER.info("Before call to loadDao");
Map<String, Object> translator = mapperTranslatorToInputStream.translate(input);
LOGGER.info("Completed input stream mapper. Before calling loadDao");
Map<String, Object> result = loadDao.close(translator);
return mapperTranslatorToCloseTrailerResponse.translate(result);
}
}
服务打印记录器语句 "Completed input stream mapper. Before calling loadDao" 然后什么也没有。
在 DAO 中,该方法的开头有一个未打印的记录器语句。
这是 DAO class..
@Repository
public class LoadDao implements CloseDao {
private SimpleJdbcCall simpleJdbcCall;
private static final Logger LOGGER = LoggerFactory.getLogger(LoadDao.class);
@Autowired
public LoadDao(@Qualifier("loadSummaryJdbcCall") SimpleJdbcCall simpleJdbcCall) {
this.simpleJdbcCall = simpleJdbcCall;
}
@HystrixCommand(fallbackMethod = "closeFallback")
public Map<String, Object> close(Map<String, Object> input) {
Map<String, Object> result;
LOGGER.debug("In loadDao Before {}.{} Procedure. Input Stream: {}", PACKAGE, PROCEDURE, input.get(P_INPUT_STREAM));
...其余 class...
我不知道从哪里开始解决这个问题这是我第一次在PCF环境中应用Spring Boot。
我将不胜感激任何我可以研究的领域。
以防其他人遇到此问题...
我使用 'CONFIGURE LOGGING LEVELS' 将日志记录级别更改为 TRACE。所以我现在可以看到输出了。
我有一个 spring 启动应用程序,在本地运行良好。使用 Postman 发送 JSON 字符串并成功完成请求。
我将应用程序部署到我们的开发 PCF 环境中。使用该服务的应用程序成功调用它。在服务日志中,它正确识别了要使用的策略并且工作正常。然后它应该调用 DAO,但没有任何反应。没有错误,在调用任何数据库操作之前 DAO 中没有日志记录语句。它就停止了。
已经开发和部署了 2 个其他应用程序来使用此服务,它们运行良好。这是服务停止工作的区域:
@Component
public class LoadStrategy implements CloseStrategy {
private static final Logger LOGGER = LoggerFactory.getLogger(LoadStrategy.class);
private LoadDao loadDao;
private MapperTranslator<Map<String, Object>, CloseRequest> mapperTranslatorToInputStream;
private MapperTranslator<CloseResponse, Map<String, Object>> mapperTranslatorToCloseTrailerResponse;
@Autowired
public Load Strategy(LoadDao loadDao,
@Qualifier("loadRequestMapper")MapperTranslator<Map<String, Object>, CloseRequest> mapperTranslatorToInputStream,
@Qualifier("loadResponseMapper")MapperTranslator<CloseResponse, Map<String, Object>> mapperTranslatorToCloseResponse) {
this.loadDao = loadDao;
this.mapperTranslatorToInputStream = mapperTranslatorToInputStream;
this.mapperTranslatorToCloseResponse = mapperTranslatorToCloseResponse;
}
public CloseResponse close(CloseRequest input) {
LOGGER.info("Before call to loadDao");
Map<String, Object> translator = mapperTranslatorToInputStream.translate(input);
LOGGER.info("Completed input stream mapper. Before calling loadDao");
Map<String, Object> result = loadDao.close(translator);
return mapperTranslatorToCloseTrailerResponse.translate(result);
}
}
服务打印记录器语句 "Completed input stream mapper. Before calling loadDao" 然后什么也没有。 在 DAO 中,该方法的开头有一个未打印的记录器语句。
这是 DAO class..
@Repository
public class LoadDao implements CloseDao {
private SimpleJdbcCall simpleJdbcCall;
private static final Logger LOGGER = LoggerFactory.getLogger(LoadDao.class);
@Autowired
public LoadDao(@Qualifier("loadSummaryJdbcCall") SimpleJdbcCall simpleJdbcCall) {
this.simpleJdbcCall = simpleJdbcCall;
}
@HystrixCommand(fallbackMethod = "closeFallback")
public Map<String, Object> close(Map<String, Object> input) {
Map<String, Object> result;
LOGGER.debug("In loadDao Before {}.{} Procedure. Input Stream: {}", PACKAGE, PROCEDURE, input.get(P_INPUT_STREAM));
...其余 class...
我不知道从哪里开始解决这个问题这是我第一次在PCF环境中应用Spring Boot。 我将不胜感激任何我可以研究的领域。
以防其他人遇到此问题... 我使用 'CONFIGURE LOGGING LEVELS' 将日志记录级别更改为 TRACE。所以我现在可以看到输出了。