Alfresco:在ftp中重写文件时增加文档版本
我想在ftp中重写文件时增加次要文档版本。当我跟踪代码时,Alfresco:在ftp中重写文件时增加文档版本,ftp,alfresco,Ftp,Alfresco,我想在ftp中重写文件时增加次要文档版本。当我跟踪代码时,ContentDiskDriver2.truncateFile()用于覆盖文件。在这个函数中,我使用versionService来增加版本。以下代码是用truncateFile()编写的 试一试{ 您能否帮助我解决交易必须处于活动状态且需要同步的问题 我找到了这个链接。。 你被“小字母”和“大字母”户外服务抓住了 “little letter”服务是原始服务,通常仅在其他Alfresco低级服务中使用。“Big letter”服务是包装好
ContentDiskDriver2.truncateFile()
用于覆盖文件。在这个函数中,我使用versionService
来增加版本。以下代码是用truncateFile()编写的
试一试{
您能否帮助我解决交易必须处于活动状态且需要同步的问题
我找到了这个链接。。
你被“小字母”和“大字母”户外服务抓住了
“little letter”服务是原始服务,通常仅在其他Alfresco低级服务中使用。“Big letter”服务是包装好的面向用户的服务,包括事务、审计、安全等
对于您的情况,您需要使用大写字母形式,因此请更改行
VersionService versionService = (VersionService) applicationContext.getBean("versionService");
到正确的一个:
VersionService versionService = (VersionService) applicationContext.getBean("VersionService");
您将获得一份VersionService的副本,其中包含事务、安全性等,这是我认为您的情况所需要的。(注意,获取bean时使用的是一个大的第一个字母,而不是一个小字母)您已经被“小字母”与“大字母”的Alfresco服务抓住了
“little letter”服务是原始服务,通常仅在其他Alfresco低级服务中使用。“Big letter”服务是包装好的面向用户的服务,包括事务、审计、安全等
对于您的情况,您需要使用大写字母形式,因此请更改行
VersionService versionService = (VersionService) applicationContext.getBean("versionService");
到正确的一个:
VersionService versionService = (VersionService) applicationContext.getBean("VersionService");
您将获得带有事务、安全性等的VersionService副本,这是我认为您在您的情况下需要的。(请注意,获取bean时使用的是大首字母而不是小字母)这是我找到的替代解决方案。显式使用事务
VersionService versionService = (VersionService) applicationContext.getBean("VersionService");
TransactionService transactionService = (TransactionService) applicationContext.getBean("transactionService");
UserTransaction tx = null;
try {
tx = transactionService.getUserTransaction();
tx.begin();
versionService.createVersion(nodeRef, versionProperties);
tx.commit();
}
catch (Exception e)
{
if(tx != null)
{
try
{
tx.rollback();
} catch (IllegalStateException e1)
{
e1.printStackTrace();
} catch (SecurityException e2)
{
e2.printStackTrace();
} catch (SystemException e3)
{
e3.printStackTrace();
}
}
}
这是我找到的另一种解决方案。显式使用事务
VersionService versionService = (VersionService) applicationContext.getBean("VersionService");
TransactionService transactionService = (TransactionService) applicationContext.getBean("transactionService");
UserTransaction tx = null;
try {
tx = transactionService.getUserTransaction();
tx.begin();
versionService.createVersion(nodeRef, versionProperties);
tx.commit();
}
catch (Exception e)
{
if(tx != null)
{
try
{
tx.rollback();
} catch (IllegalStateException e1)
{
e1.printStackTrace();
} catch (SecurityException e2)
{
e2.printStackTrace();
} catch (SystemException e3)
{
e3.printStackTrace();
}
}
}
谢谢你的解释…现在我可以根据你的解释来解决…我找到了另一个解决方案。你能帮我检查一下吗?谢谢你的解释…现在我可以根据你的解释来解决…我找到了另一个解决方案。你能帮我检查一下吗?我建议不要这样做。如果你真的这样做的话如果您不想直接使用little letter服务(因此担心安全性、审核等),您将需要使用RetryingTransaction。否则,当出现可重试问题(主要是事务冲突)时,您将出现间歇性故障。我建议您不要这样做。如果您确实想直接使用little letter服务(并因此担心安全性、审计等),您将希望使用RetryingTransaction来代替。否则,当出现可重试问题(主要是事务冲突)时,您将出现间歇性故障