大家帮帮我啊,weblogic上报错java.lang.ClassCastException

本文介绍了一个在WebLogic服务器上处理BLOB数据导出的问题及解决方案。作者尝试从数据库中读取BLOB数据并将其写入文件,在Tomcat上运行正常但在WebLogic上遇到ClassCastException错误。通过分析堆栈跟踪,可以找到解决此跨平台问题的方法。

各位大哥大姐帮帮我啊,谢谢了

String  fvd_id = request.getParameter("fvd_id");
     System.out.println(fvd_id);
      InputStream in = null; // 建立输入流
      ResultSet rs = null;
      BLOB blob = null;
      java.io.ByteArrayOutputStream outs = null;
      String filename = "";
     long size = 0;
     FileConfigs filecon = FileConfigs.getInstance();
     CommonModel cm = DBUtil.getArchDBModel(filecon.getDBType(),filecon.getDBURL(),filecon.getDBUSER(),filecon.getDBPASSWD());
      rs=cm.querySQL("select FORMATAFFIX from  IssueContent where fvd_id='"+fvd_id+"'");
     while(rs.next()){
         blob = (BLOB) rs.getBlob("FORMATAFFIX");
         size = blob.length();
         System.out.println(size+"00000000000000000000");
          int bsize =  blob.getBufferSize();
          byte[] buffer = new byte[bsize]; // 建立缓冲区
          in = blob.getBinaryStream();
          outs = new java.io.ByteArrayOutputStream();
          int nk = 0;
          while ( (nk = in.read(buffer)) != -1) {
            outs.write(buffer, 0, nk);
          }
          byte[] databytes = outs.toByteArray();
         InputStream ins = blob.getBinaryStream();
          File file = new File("c://WINDOWS//COOATemplate//Printfile.ceb");
          OutputStream fout = new FileOutputStream(file);
          //下面将BLOB数据写入文件
          byte[] b = new byte[blob.getBufferSize()];
          int len = 0;
          while ( (len = ins.read(b)) != -1) {
          fout.write(b, 0, len);
        }
        fout.close();
        ins.close();
                } 

tomcat 上运行没问题,weblogic上报下面的错误:

Error 500--Internal Server Error
java.lang.ClassCastException
 at jsp_servlet._issue.__trans_ceb._jspService(__trans_ceb.java:209)
 at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
 at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
 at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
 at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
 at com.bstek.dorado.core.FilterHandle.c(Unknown Source)
 at com.bstek.dorado.core.FilterHandle.doFilter(Unknown Source)
 at com.bstek.dorado.core.DoradoFilter.doFilter(Unknown Source)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6316)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
 at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
 at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
 at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
 at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
 

<think>好的,我现在需要帮用户解决WebLogic中的java.lang.Exception: adminToProduction错误。首先,我得了解这个错误通常在什么情况下发生。根据用户提供的引用内容,用户之前遇到的是文件访问权限的问题,可能和部署路径设置有关。现在这个adminToProduction错误,可能也和部署配置或权限有关。 首先,我应该回忆一下WebLogic的部署流程。当用户将应用部署到生产模式时,WebLogic可能会涉及到不同的部署目录。adminToProduction可能指的是将应用从管理服务器部署到生产环境中的受管服务器。这时候,如果权限不足,或者路径配置错误,可能导致部署失败,抛出这个异常。 接下来,我需要考虑可能的原因。比如,部署目录的权限问题,用户是否有写入权限?另外,部署描述符文件(如weblogic.xml或weblogic-application.xml)是否正确配置了生产模式的相关参数?还有可能是域配置的问题,比如受管服务器是否正确配置,网络连接是否正常。 然后,解决方案可能包括检查目录权限,确保WebLogic进程有权限访问部署目录。另外,检查部署配置,确认是否指向了正确的路径,避免路径中有空格或特殊字符。还有可能需要检查域中的日志文件,如admin server的日志,查看更详细的错误信息,帮助定位问题。 此外,用户之前提到过autodeploy目录的问题,可能自动部署的配置有误,或者存在残留的锁定文件,导致部署冲突。这时候,清理临时文件和缓存,重启WebLogic服务可能有效。 还需要考虑WebLogic的版本是否与项目兼容,是否存在已知的bug。如果有,可能需要应用补丁或升级版本。 最后,生成相关问题的时候,要围绕部署错误、权限问题、配置调整等方面,帮助用户扩展可能遇到的问题点。</think>### WebLogic "java.lang.Exception: adminToProduction" 错误分析与解决 #### 一、错误原因分析 1. **部署路径权限问题** WebLogic 服务账户对部署目录(如 `autodeploy` 或自定义编译输出路径)缺少读写权限。典型表现为: $$ \text{错误日志包含 "Access denied" 或 "Permission denied"} $$ 该问题常见于 Windows 系统或 Linux 未正确配置用户组权限时[^1]。 2. **部署配置冲突** - IDEA 编译输出路径与 WebLogic 部署路径未对齐 - 存在残留的 `.lok` 锁定文件或临时文件 - 域配置中设置了冲突的自动部署策略 3. **生产模式配置错误** 若使用生产模式(非开发模式),需确保 `weblogic.xml` 中已正确配置资源引用,例如: ```xml <container-descriptor> <production-mode-enabled>true</production-mode-enabled> </container-descriptor> ``` --- #### 二、解决方案步骤 1. **检查文件系统权限** - Windows:右键部署目录 → 属性 → 安全 → 添加 `SYSTEM`、`Administrators` 完全控制权 - Linux:执行 `chmod -R 755 /path/to/deploy` 并验证 WebLogic 进程用户权限 2. **清理部署残留文件** 删除以下文件后重启 WebLogic 服务: ```bash rm $DOMAIN_HOME/autodeploy/*.lok rm $DOMAIN_HOME/servers/AdminServer/tmp/_WL_internal/*.LOCK ``` 3. **配置 IDEA 编译路径** 在项目设置中强制对齐路径(示例): | IDEA 设置项 | 推荐值 | |---------------------------|---------------------------------------| | Output path | E:\weblogic\autodeploy\myapp\WEB-INF\classes | | Deployment descriptor path| E:\weblogic\autodeploy\myapp\WEB-INF | 4. **修改启动参数** 在 `startWebLogic.cmd` 中添加 JVM 参数: ```properties -Dweblogic.deployment.debug=true -Dweblogic.deployment.noAutoAppDirLocking=true ``` --- #### 三、验证方法 1. 查看日志定位具体错误: ```bash tail -f $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log ``` 2. 使用 `wlst.sh` 测试部署: ```python connect('weblogic','password','t3://localhost:7001') deploy('myapp','E:\weblogic\autodeploy\myapp') ``` --- 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值