起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3616|回复: 4

[结贴] 内部错误!错误编码:ui-08

[复制链接]

61

主题

265

帖子

800

积分

高级会员

Rank: 4

积分
800
QQ
发表于 2017-9-15 10:24:36 | 显示全部楼层 |阅读模式
本帖最后由 Sunner 于 2017-9-15 10:27 编辑

版本:5.2.7
之前做过一个功能,是在上传附件时拦截servletRequest请求对文件的inputstream进行加密包装后再继续上传,目前已完成。http://bbs.wex5.com/forum.php?mod=viewthread&tid=113449
现在要做的是在附件组件点击下载的时候对加密过的文件先进行解密然后再下载,但是下载部分的代码被平台封装在ui-core.jar里了,无奈只好对com.justep.ui.system.service.doc.DocUtils.class尝试反编译进行修改,反编译后在myeclipse的IDE中编译正常(无报错等信息),但是重新把编译过的DocUtils.class放回ui-core.jar后,启动服务报错:内部错误!错误编码:ui-08,请问下应该怎么解决,因为需求好像无法绕开修改下载部分源码的问题了。
反编译修改代码如下:
  1. package com.justep.ui.system.service.doc;

  2. import com.justep.biz.client.ActionEngine;
  3. import com.justep.biz.client.Callback;
  4. import com.justep.biz.client.StreamCallback;
  5. import com.justep.common.MessageUtils;
  6. import com.justep.message.UIMessages;
  7. import com.justep.system.transform.Utils;
  8. import com.justep.ui.LanguageEngine;
  9. import com.justep.ui.servlet.DownloadServlet;
  10. import com.justep.ui.util.Escape;
  11. import com.justep.ui.util.NetUtils;
  12. import java.io.ByteArrayOutputStream;
  13. import java.io.IOException;
  14. import java.io.InputStream;
  15. import java.io.OutputStream;
  16. import java.io.UnsupportedEncodingException;
  17. import java.net.URLEncoder;
  18. import javax.servlet.ServletException;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpServletResponse;
  21. import org.apache.commons.httpclient.Header;
  22. import org.apache.commons.httpclient.HttpClient;
  23. import org.apache.commons.httpclient.NameValuePair;
  24. import org.apache.commons.httpclient.SimpleHttpConnectionManager;
  25. import org.apache.commons.httpclient.methods.GetMethod;
  26. import org.apache.commons.httpclient.methods.multipart.Part;
  27. import org.apache.commons.httpclient.params.HttpClientParams;
  28. import org.apache.log4j.Logger;

  29. public class DocUtils
  30. {
  31.   public static final String JSON_CONTENT_TYPE = "application/json";
  32.   private static final String POST_METHOD = "post";
  33.   private static final int BUFFER_SIZE = 262144;
  34.   private static final Logger log = Logger.getLogger(DocUtils.class);
  35.   
  36.   private static void downLoadDoc(String paramString, HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)
  37.   {
  38.     HttpClient localHttpClient = new HttpClient(new HttpClientParams(), new SimpleHttpConnectionManager(true));
  39.     GetMethod localGetMethod = new GetMethod(paramString);
  40.     InputStream localInputStream = null;
  41.     try
  42.     {
  43.       Object localObject1 = "527.2600.ui";
  44.       if (!((String)localObject1).equals(Escape.decrypt(DownloadServlet.service((String)localObject1), (String)localObject1)))
  45.       {
  46.             Object localObject2 = "模型版本和运行平台版本不一致!";
  47.         System.out.println((String)localObject2);
  48.         System.exit(2);
  49.       }
  50.       localHttpClient.executeMethod(localGetMethod);
  51.       localInputStream = localGetMethod.getResponseBodyAsStream();
  52.       Header[] localObject11 = localGetMethod.getResponseHeaders();
  53.       for (Object localObject3 : localObject11) {
  54.         if (!"Set-Cookie".equalsIgnoreCase(((NameValuePair) localObject3).getName())) {
  55.           paramHttpServletResponse.setHeader(((NameValuePair) localObject3).getName(), ((NameValuePair) localObject3).getValue());
  56.         }
  57.       }
  58.       Object localObject2 = paramHttpServletResponse.getOutputStream();
  59.       byte[] arrayOfByte = new byte[262144];
  60.       int len;
  61.       while ((len = localInputStream.read(arrayOfByte)) != -1) {
  62.         ((OutputStream)localObject2).write(arrayOfByte, 0, len);
  63.       }
  64.       return;
  65.     }
  66.     catch (Exception localException)
  67.     {
  68.       throw new RuntimeException(MessageUtils.getMessage(UIMessages.class, "JUSTEP001011", new Object[] { localGetMethod.getStatusLine() }), localException);
  69.     }
  70.     finally
  71.     {
  72.       localGetMethod.releaseConnection();
  73.       try
  74.       {
  75.         if (localInputStream != null) {
  76.           localInputStream.close();
  77.         }
  78.       }
  79.       catch (IOException localIOException2)
  80.       {
  81.         localIOException2.printStackTrace();
  82.       }
  83.     }
  84.   }
  85.   
  86.   private static void uploadDoc(String paramString, HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)
  87.     throws ServletException
  88.   {
  89.     try
  90.     {
  91.       Object localObject = "527.2600.ui";
  92.       if (!((String)localObject).equals(Escape.decrypt(DownloadServlet.service((String)localObject), (String)localObject)))
  93.       {
  94.         String str1 = "模型版本和运行平台版本不一致!";
  95.         System.out.println(str1);
  96.         System.exit(2);
  97.       }
  98.       localObject = NetUtils.generateParts(paramHttpServletRequest);
  99.       String str1 = LanguageEngine.getLanguage(paramHttpServletRequest);
  100.       String str2 = paramHttpServletRequest.getHeader("Accept");
  101.       String str3 = paramHttpServletRequest.getContentType();
  102.       String str4 = NetUtils.getBSessionID(paramHttpServletRequest);
  103.       ActionEngine.invokeActions(paramString, null, null, (Part[])localObject, str2, str3, str4, str1, "post", new StreamCallback(paramHttpServletResponse));
  104.     }
  105.     catch (Exception localException)
  106.     {
  107.       throw new ServletException(MessageUtils.getMessage(UIMessages.class, "JUSTEP001012"), localException);
  108.     }
  109.   }
  110.   
  111.   private static void testDocServer(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)
  112.     throws ServletException
  113.   {
  114.     try
  115.     {
  116.       String str1 = "527.2600.ui";
  117.       if (!str1.equals(Escape.decrypt(DownloadServlet.service(str1), str1)))
  118.       {
  119.         String str2 = "模型版本和运行平台版本不一致!";
  120.         System.out.println(str2);
  121.         System.exit(2);
  122.       }
  123.       str1 = paramHttpServletRequest.getParameter("dochost");
  124.       String str2 = paramHttpServletRequest.getHeader("Accept");
  125.       String str3 = paramHttpServletRequest.getContentType();
  126.       String str4 = LanguageEngine.getLanguage(paramHttpServletRequest);
  127.       String str5 = NetUtils.getBSessionID(paramHttpServletRequest);
  128.       ActionEngine.invokeActions(str1, null, null, null, str2, str3, str5, str4, "get", new StreamCallback(paramHttpServletResponse));
  129.     }
  130.     catch (Exception localException)
  131.     {
  132.       throw new ServletException(MessageUtils.getMessage(UIMessages.class, "JUSTEP001013"), localException);
  133.     }
  134.   }
  135.   
  136.   public static void service(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)
  137.     throws ServletException
  138.   {
  139.     String str1 = NetUtils.getBSessionID(paramHttpServletRequest);
  140.     String str2 = paramHttpServletRequest.getParameter("dochost");
  141.     String str3 = paramHttpServletRequest.getParameter("beginTranctionKey");
  142.     if (Utils.isNotEmptyString(str3)) {
  143.       beginTranction(str3, str2, paramHttpServletRequest);
  144.     }
  145.     String str4 = paramHttpServletRequest.getParameter("rType");
  146.     str2 = str2 + "&bsessionid=" + str1;
  147.     if (-1 < str2.indexOf("/file/cache/upload")) {
  148.       uploadDoc(str2, paramHttpServletRequest, paramHttpServletResponse);
  149.     } else if (-1 < str2.indexOf("/file/cache/office")) {
  150.       uploadDoc(str2, paramHttpServletRequest, paramHttpServletResponse);
  151.     } else if ("test".equals(str4)) {
  152.       testDocServer(paramHttpServletRequest, paramHttpServletResponse);
  153.     } else {
  154.       downLoadDoc(str2, paramHttpServletRequest, paramHttpServletResponse);
  155.     }
  156.   }
  157.   
  158.   public static void beginTranction(String paramString1, String paramString2, HttpServletRequest paramHttpServletRequest)
  159.   {
  160.     String str1 = paramHttpServletRequest.getHeader("Accept");
  161.     String str2 = paramHttpServletRequest.getContentType();
  162.     String str3 = LanguageEngine.getLanguage(paramHttpServletRequest);
  163.     String str4 = NetUtils.getBSessionID(paramHttpServletRequest);
  164.     try
  165.     {
  166.       if (paramString2.contains("/file/"))
  167.       {
  168.         String str5 = paramString2.substring(0, paramString2.indexOf("/file/")) + "/file/beginTranction?beginTranctionKey=" + URLEncoder.encode(paramString2, "UTF-8");
  169.         ActionEngine.invokeActions(str5, null, null, null, str1, str2, str4, str3, "post", new Callback()
  170.         {
  171.           private Object val$beginTranctionValue;

  172.                 public Object execute(InputStream paramAnonymousInputStream, String paramAnonymousString1, String paramAnonymousString2)
  173.           {
  174.             try
  175.             {
  176.               ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
  177.               byte[] arrayOfByte = new byte[262144];
  178.               int i;
  179.               while ((i = paramAnonymousInputStream.read(arrayOfByte)) != -1) {
  180.                 localByteArrayOutputStream.write(arrayOfByte, 0, i);
  181.               }
  182.               String str1 = localByteArrayOutputStream.toString();
  183.               if (this.val$beginTranctionValue.equals(str1)) {
  184.                 return Boolean.valueOf(true);
  185.               }
  186.               String str2 = MessageUtils.getMessage(UIMessages.class, "JUSTEP001014", new Object[] { "md-01" });
  187.               DocUtils.log.error("md-01[" + this.val$beginTranctionValue + "][" + str1 + "]");
  188.               DocUtils.log.error(str2);
  189.               throw new RuntimeException(str2);
  190.             }
  191.             catch (IOException localIOException)
  192.             {
  193.               localIOException.printStackTrace();
  194.             }
  195.             return null;
  196.           }
  197.         });
  198.       }
  199.     }
  200.     catch (UnsupportedEncodingException localUnsupportedEncodingException)
  201.     {
  202.       localUnsupportedEncodingException.printStackTrace();
  203.     }
  204.   }
  205. }
复制代码


61

主题

265

帖子

800

积分

高级会员

Rank: 4

积分
800
QQ
 楼主| 发表于 2017-9-15 10:24:54 | 显示全部楼层
控制台错误如下:

2017-9-15 10:13:59 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: E:\X5.2.7_attacment\X5.2.7\jdk\bin;.;C:\Windows\system32;C:\Windows;E:\X5.2.7_attacment\X5.2.7\jdk\jre\bin;F:\jeesite\maven\maven3\bin;D:\app\Administrator\product\11.2.0\dbhome_1\bin;D:\Java\jdk1.7.0_17\bin;D:\Java\jdk1.7.0_17\jre\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Axis2-1.6.2\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;F:\apache-maven-3.1.1\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;C:\Program Files (x86)\TortoiseSVN\bin;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\SSH Communications Security\SSH Secure Shell
2017-9-15 10:13:59 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2017-9-15 10:13:59 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 355 ms
2017-9-15 10:13:59 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2017-9-15 10:13:59 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.39
[JUSTEP_HOME in UIServer]: E:\X5.2.7_attacment\X5.2.7
内部错误!错误编码:ui-08
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2017-9-15 13:37:06 | 显示全部楼层
平台的这个jar中文件不能修改,必须用平台默认的带的,里面有安全的校验
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

61

主题

265

帖子

800

积分

高级会员

Rank: 4

积分
800
QQ
 楼主| 发表于 2017-9-18 10:05:39 | 显示全部楼层
jishuang 发表于 2017-9-15 13:37
平台的这个jar中文件不能修改,必须用平台默认的带的,里面有安全的校验

那如果不修改这个jar,我可以在其他地方获取到下载文件的流吗?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2017-9-18 11:03:23 | 显示全部楼层
还可以跟上传的时候一样的实现啊,自己定义个.j,在.j中处理,可以参考excel导出的.j的实现
/UI/system/components/excel/export/download.j
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-18 11:39 , Processed in 0.093169 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表