硬盘问题(为什么是5.7。)

2020-09-20 04:30发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有5.7。 平台和我们的data/media/impex文件夹以指数方式填充硬盘。 有人遇到过同样的问题吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有5.7。 平台和我们的data/media/impex文件夹以指数方式填充硬盘。 有人遇到过同样的问题吗?

付费偷看设置
发送
8条回答
大道至简
1楼-- · 2020-09-20 05:04

确实,我遇到了问题,所以我实现了自己的impex导入器。 这样,我可以使用该属性来避免创建大量媒体:

  import java.io.File;
  导入java.io.FileInputStream;
  导入java.io.InputStream;

  导入org.apache.log4j.Logger;

  导入de.hybris.platform.impex.jalo.ImpExException;
  导入de.hybris.platform.jalo.JaloSession;
  导入de.hybris.platform.servicelayer.impex.ImportConfig;
  导入de.hybris.platform.servicelayer.impex.ImportResult;
  导入de.hybris.platform.servicelayer.impex.ImportService;
  导入de.hybris.platform.servicelayer.impex.impl.StreamBasedImpExResource;
  导入de.hybris.platform.servicelayer.model.ModelService;
  导入de.hybris.platform.util.CoreImpExConstants;

/**
   * {@link SetupImpexService}的默认实现。
   */
  公共类CustomSetupImpexService
  {
      私有String fileEncoding;
      私有字符串impexExt;
      私有静态最终Logger LOG = Logger.getLogger(CustomSetupImpexService.class);

      公共CustomSetupImpexService()
      {
          this.fileEncoding =" UTF-8";
          this.impexExt =" .impex";
      }

      受保护的字符串getFileEncoding()
      {
          返回this.fileEncoding;
      }

      公共无效setFileEncoding(最终字符串fileEncoding)
      {
          this.fileEncoding = fileEncoding;
      }

      受保护的字符串getImpexExt()
      {
          返回this.impexExt;
      }

      公共无效setImpexExt(最终字符串impexExt)
      {
          this.impexExt = impexExt;
      }

     //服务
      私有ModelService modelService;
      私有ImportService importService;

      公共ModelService getModelService()
      {
          返回modelService;
      }

      公共无效setModelService(最终ModelService modelService)
      {
          this.modelService = modelService;
      }

      公共ImportService getImportService()
      {
          返回importService;
      }

      公共无效setImportService(ImportService importService)
      {
          this.importService = importService;
      }

      @Override
      public void importImpexFileWithException(最终的字符串文件,最终的布尔型errorIfMissing)引发异常
      {
          importImpexFileWithException(file,errorIfMissing,false);
      }

      @Override
      public void importImpexFileWithException(最终的字符串文件,最终的布尔型错误IfMissing,最终的布尔型legacyMode)抛出异常
      {
          如果(!new File(file).exists())
          {
             //检查是否是相对资源路径
              尝试(InputStream inputStream = Thread.currentThread()。getContextClassLoader()。getResourceAsStream(file))
              {
                  如果(inputStream == null)
                  {
                      如果(errorIfMissing)
                      {
                          LOG.error("正在导入[" +文件+"] ...错误(文件丢失)",null);
                      }
                      其他
                      {
                          LOG.info("正在导入[" +文件+"] ...跳过(未找到可选文件)");
                      }
                      抛出新的ImpExException("文件丢失:" +文件);
                  }
                  其他
                  {
                      JaloSession.getCurrentSession()。setAttribute(CoreImpExConstants.CTX_DONT_CHANGE_EXISTING_LINKS,Boolean.FALSE);
                      this.importImpexFileWithExceptionAndCleanMedia(file,inputStream,legacyMode);
                  }
              }
          }
          其他
          {
              JaloSession.getCurrentSession()。setAttribute(CoreImpExConstants.CTX_DONT_CHANGE_EXISTING_LINKS,Boolean.FALSE);
              试试(最终FileInputStream fis = new FileInputStream(file))
              {
                  this.importImpexFileWithExceptionAndCleanMedia(file,fis,legacyMode);
              }
          }
      }

      public void importImpexFileWithExceptionAndCleanMedia(最终字符串文件,最终InputStream流,最终boolean legacyMode)引发异常
      {
          字符串消息="正在导入[" +文件+"] ...";

          LOG.info(消息);

          最终ImportConfig importConfig = new ImportConfig();
          importConfig.setScript(new StreamBasedImpExResource(stream,getFileEncoding()));
          importConfig.setLegacyMode(Boolean.valueOf(legacyMode));
         //在导入后使用该命令删除Impex Media
          importConfig.setRemoveOnSuccess(true);
          importConfig.getScript()。getMedia()。setRemoveOnSuccess(true);

          最终ImportResult importResult = getImportService()。importData(importConfig);

          如果(importResult.isError())
          {
              消息+ ="失败";
              如果(null!= importResult.getUnresolvedLines())
              {
                  message =" Impex错误原因:" + importResult.getUnresolvedLines()。getDescription();
              }
              LOG.error(消息);
              抛出新的ImpExException(message);
          }
          否则if(importConfig.getScript()。getMedia()!= null && importConfig.getScript()。getMedia()。isRemoveOnSuccess())
          {
              modelService.remove(importConfig.getScript()。getMedia());
          }
      }
  }
  
宇峰
2楼-- · 2020-09-20 05:09

人们,请查看ImpExMedia类型上的" removeOnSuccess"标志。 它不仅负责删除模型本身,还负责删除impex媒体文件夹中文件系统上的文件。 如果您创建了拦截器(例如:ImpExMediaInitDefaultsInterceptor)并设置了

  setRemoveOnSuccess(真)
  

然后将ImpExMedia从数据库和文件系统上的impex媒体文件夹中删除。

一周热门 更多>