- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Activity 类,它被注释为一个调用 Action 类的组件:
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = NonRetryableException.class)
public ExecuteTemplateResponse executeTemplate(ExecuteTemplateRequest request)
{
actionExecutionContext = action.execute(actionExecutionContext);
}
@Transactional(propagation = Propagation.MANDATORY)
@Override
public ActionExecutionContext execute(ActionExecutionContext actionExecutionContext)
{
iogl = ioglDao.create(iogl);
return actionExecutionContext;
}
@Transactional(propagation = Propagation.MANDATORY)
@Override
public InventoryOwnerGroupLocation create(InventoryOwnerGroupLocation iogl)
{
// injected
Session session = sessionFactory.getCurrentSession();
session.save(iogl);
return iogl;
}
@Service("FASelfServiceMappingService")
@Component
public class ExecuteTemplateActivity extends Activity
{
private final static Logger logger = Logger.getLogger(ExecuteTemplateActivity.class);
// mapper framework to interact with DynamoDB database
private final DynamoDBMapper dynamoDBMapper;
// class to convert external models to internal models
private final InternalModelToDynamoDBModelConverter internalToDynamoDBConverter;
private final InternalModelToOracleModelConverter internalToOracleConverter;
private final CoralModelToInternalModelConverter coralToInternalConverter;
// class to generate list of actions
private final ActionGenerator actionGenerator;
// status constants
private static final String STATUS_COMPLETED = "COMPLETED";
private static final String STATUS_FAILED = "FAILED";
@Inject
public ExecuteTemplateActivity(InternalModelToDynamoDBModelConverter internalToDynamoDBConverter,
InternalModelToOracleModelConverter internalToOracleConverter,
CoralModelToInternalModelConverter coralToInternalConverter,
ActionGenerator actionGenerator,
DynamoDBMapper dynamoDBMapper)
{
this.internalToDynamoDBConverter = internalToDynamoDBConverter;
this.internalToOracleConverter = internalToOracleConverter;
this.coralToInternalConverter = coralToInternalConverter;
this.actionGenerator = actionGenerator;
this.dynamoDBMapper = dynamoDBMapper;
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = NonRetryableException.class)
@Operation("ExecuteTemplate")
public ExecuteTemplateResponse executeTemplate(ExecuteTemplateRequest request) throws RetryableException, NonRetryableException
{
try
{
logger.info("Input given: " + request);
// convert request input to an internal request
Request internalRequest = coralToInternalConverter.coralRequestToInternal(request);
logger.info("Successfully converted External Request to internal Request.");
String templateName = getTemplateName(internalRequest);
logger.info("Template Name extracted from the request: " + templateName);
Template template = getTemplateFromDynamo(internalRequest, templateName);
logger.info("Template read from dynamoDB table: " + template);
// Generate a map from string to Action objects associated with the retrieved template
List<Action> listOfActions = actionGenerator.generateActions(template.getActions());
logger.info("Actions generated for template " + templateName + ": " + listOfActions);
// Generate the action context for actions to pass to each other to keep track of state
ActionExecutionContext actionExecutionContext = internalToOracleConverter.inputsToActionExecutionContext(internalRequest.getInputs());
logger.info("Built ActionExecutionContext:" + actionExecutionContext);
// execute the actions
for (Action action : listOfActions)
{
actionExecutionContext = action.execute(actionExecutionContext);
}
logger.info("All actions executed successfully.");
// request was completed successfully, create request in Request table
String requestId = createRequestInDynamo(internalRequest, STATUS_COMPLETED);
ExecuteTemplateResponse executeTemplateResponse = new ExecuteTemplateResponse();
executeTemplateResponse.setRequestId(requestId);
logger.info("Service call "+ this.getClass() +" succeeded.");
return executeTemplateResponse;
}
catch (RetryableException re)
{
logger.error("Retryable Exception occurred in activity.", re);
throw re;
}
catch (NonRetryableException nre)
{
logger.error("NonRetryable Exception occurred in activity.", nre);
throw nre;
}
catch (Exception e)
{
logger.error("Unknown Exception occurred in activity.", e);
throw new NonRetryableException("Unexpected error", e);
}
}
/**
* extracts the templateName from the internalRequest
* @param internalRequest internal model of the request
* @return templateName
*/
private String getTemplateName(Request internalRequest)
{
Validate.notNull(internalRequest, "internalRequest must not be null.");
String templateName;
try
{
// extract template name from request
templateName = internalRequest.getTemplateName();
Validate.notNull(templateName, "templateName must not be null.");
}
catch (IllegalArgumentException iae)
{
createRequestInDynamo(internalRequest, STATUS_FAILED);
logger.error("Invalid input: templateName is null.");
throw new NonRetryableException("Invalid input: templateName is null.", iae);
}
return templateName;
}
/**
* Retrieves the template object associated with given templateName
* @param internalRequest internal model of request
* @param templateName name of template to retrieve
* @return Template object
*/
private Template getTemplateFromDynamo(Request internalRequest, String templateName)
{
Validate.notNull(internalRequest, "internalRequest must not be null.");
Validate.notNull(templateName, "templateName must not be null.");
Template template;
try
{
// read the template with given template name from Templates table
template = dynamoDBMapper.load(Template.class, templateName);
}
catch (DynamoDBMappingException ddbme)
{
createRequestInDynamo(internalRequest, STATUS_FAILED);
logger.error("Reading template from dynamoDB table failed.", ddbme);
throw new NonRetryableException("Incorrect class annotation or incompatible with class", ddbme);
}
catch (AmazonClientException ace)
{
createRequestInDynamo(internalRequest, STATUS_FAILED);
logger.error("Reading template from dynamoDB table failed.", ace);
throw new RetryableException("Error when loading template from dynamoDB", ace);
}
return template;
}
<tx:annotation-driven transaction-manager="txManager"
mode="proxy" proxy-target-class='true' />
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<property name="dataSource" ref="dataSource" />
</bean>
最佳答案
这可能是与您的 Spring 配置相关的问题。您是否按照 http://docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html 中的指南进行操作? ?你能展示你如何配置 Spring 事务管理吗?
关于java - 在 DAO 类中找不到标记为传播 'mandatory' 异常的事务的现有事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38734642/
当另一个 [关联] 字段具有特定值时,如何使必填字段成为非必填字段? 假设我有以下模型: class foo(models.Model): bar = models.CharField(max
我有一个父表 Venue (venueId[PK],venueName) 和两个子表,Performance (performanceId[PK], performanceName) 和 Meal (
总结:我需要将 YAML 格式的数据解析为 golang 结构。是否有一种方法(库、属性)使某些字段成为必需字段,即如果某些字段不存在,则使 Unmarshal 函数返回错误? 例如想要什么:此代码中
我想知道 SSL 证书和以 https:// 开头的 URL 是否对于 Telegram 机器人的 webhook 是必需的?正如它在 https://core.telegram.org/bots/a
我需要强制使用 Django User 模型中的电子邮件字段。如何做到这一点对我来说并不明显。欢迎提出建议。我目前正在使用: from django.contrib.auth.forms import
我有以下 XSD 验证: SchemaFactory schemaFactory = SchemaFactory .newInstance(XMLConstants.W3C_XM
使用带有 的响应式图像集时如果没有断点(即没有 sizes 属性),您通常会提供不同分辨率的同一图像的多个版本,然后您在 srcset 中定义这些版本使用像素密度语法的属性,例如1x , 2x ,
不少网站不需要注册人验证他们的电子邮件,而且它们似乎运行良好,而无需您经历这种(轻微的)考验。 这种机制可以确保电子邮件的有效性并阻止不受欢迎的机器人似乎是合乎逻辑的,但是它是否适用于低用户功能的网站
我正在尝试在 wildfly 8.2.0-Final 上定义带有注释和部署描述符的消息驱动 bean。我想用注释声明配置的静态部分,用 xml 部署描述符声明变量部分。部署以下 mdb 时,出现异常。
我需要在没有沙盒的情况下分发我的应用程序,因为我需要可访问性 API。有谁知道如果我在没有启用沙盒的情况下提交应用程序是否会被拒绝(有充分的理由)? 在 Mac 中 App Store Guideli
我们有一个通过 Web Start 使用 JNLP 启动的应用程序,使用以下内容来确保应用程序仅使用最新代码运行: title.... vendor nam
我发现这令人费解且违反直觉: 为什么会这样: LoggingConfiguration config = LogManager.Configuration; config.LoggingRules.A
我在 Play 中发现了有趣的东西!框架表单验证。例如我有这样的形式: case class Foo(mystring: String, myint: Int, mybool: Boolean) {
我有一个 Activity 类,它被注释为一个调用 Action 类的组件: @Transactional(propagation = Propagation.REQUIRED, readOnly
我是 azure 管道的新手。我有使用 azure 管道的构建作业,源代码位于同一分支开发中并且运行良好,但是是否可以在单独的分支中拥有 azure 管道和源代码? 如果是这样,请帮助我 此外,我如何
我们正在尝试以编程方式在开发测试实验室中启用强制工件。我们发现:https://learn.microsoft.com/en-us/azure/templates/microsoft.devtestl
我们正在尝试以编程方式在开发测试实验室中启用强制工件。我们发现:https://learn.microsoft.com/en-us/azure/templates/microsoft.devtestl
我希望我可以设置一个 cmdlet,以便它可以使用环境变量作为参数值(如果存在),或者以其他方式提示。 function Test-Mandatory { [CmdletBinding()]
好的,首先是一些代码。这是我的 displayCollection.tag 的内容: ${irc.mgrid} 这是我从 (myq.jsp) 调用它的 JSP: 这是 irColle
这是BeanClass.java package com.practice.spring; import org.springframework.beans.factory.annotation.Re
我是一名优秀的程序员,十分优秀!