IE browser is closing and crashing as soon as you open Oracle Apps

本文提供了解决IE浏览器在打开OracleApps时崩溃的步骤:禁用标签浏览、将OracleApp网址添加到受信任站点、取消启用内存保护以抵御在线攻击,并考虑卸载/禁用自定义工具栏。
If your IE browser is closing and crashing as soon as you open Oracle Apps, then you can try the following steps to avoid the browser from crashing.

1) Disable Tabbing Browsing
Tools > Internet Options > General > Tabs > Settings > Uncheck Enable Tabbed Browsing

2) Add the URL for the Oracle Apps to your Trusted Sites
Tools > Internet Options > Security

3) Go to Tools > Internet Options > Advanced > Click on Tools, Internet Options, then the Advanced tab. Scroll down to Security and uncheck "Enable memory protection to help mitigate online attacks".
Try to access Oracle Apps again. If it does not work, you might have a problem with the custom tool bars (possibly a pop-up blocker)

4) Uninstall/Disable Custom Toolbars (Might not be necessary)


### 关于MyBatis或Spring框架中SqlSession同步未激活导致的非事务性关闭问题 当遇到 `Closing non-transactional SqlSession` 的日志提示时,通常表明当前的 `SqlSession` 是非事务性的,并且由于某种原因其生命周期管理未能正常完成。这种情况可能发生在使用 MyBatis 或 Spring 框架集成时,如果配置不当或者上下文环境不匹配,则可能导致此现象。 #### 原因分析 1. **SqlSession 生命周期管理** 在 MyBatis 中,`SqlSession` 对象的创建和销毁由开发者负责,而在 Spring 集成环境下,通常是通过 AOP 和代理机制来自动管理 `SqlSession` 的生命周期。然而,在某些情况下(例如线程切换、异步调用),可能会导致无法正确检测到事务状态,从而触发非事务性会话的关闭操作[^1]。 2. **Synchronization 注册失败** 当 `SqlSession` 被绑定到当前线程并参与事务时,它会被注册为资源的一部分以便后续提交或回滚处理。但如果 Synchronization 未被成功注册(可能是由于事务管理器配置错误或其他异常情况),则会在方法结束时强制关闭该会话实例。 3. **手动控制与自动化冲突** 如果应用程序既依赖 Spring 自动化管理又存在显式的 `sqlSessionFactory.openSession()` 调用,则容易引发混乱。这种混合模式下很容易破坏原有的设计逻辑,进而造成不必要的警告信息输出。 #### 解决方案 以下是几种常见的解决方案: ##### 方法一:确认正确的事务传播行为 确保所使用的 Service 层方法具有恰当的 @Transactional 注解设置。对于只读查询可以指定 propagation=Propagation.SUPPORTS 来减少开销;而对于写入操作默认 REQUIRED 即可满足需求。这样能够有效避免因为缺乏必要的事务支持而导致额外的日志记录。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; @Transactional(readOnly=true, propagation=Propagation.SUPPORTS) public List<User> getAllUsers() { ... } @Transactional(propagation=Propagation.REQUIRED) public void addUser(User user) { ... } } ``` ##### 方法二:调整执行策略至容器托管范围之内 尽量让所有的 DAO 访问都经过 Spring Bean 容器内的组件来进行,而不是自行构建新的 Session 实例。这样做不仅简化了编码过程还增强了系统的稳定性和一致性。 例如下面这段代码展示了如何利用 Mapper 接口代替原始方式获取数据源连接对象: ```java // 不推荐的做法 try(SqlSession session = sqlSessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); } catch(Exception e){} // 更好的实践 @Autowired private UserMapper userMapper; List<User> users = userMapper.selectAll(); ``` ##### 方法三:审查自定义拦截器/插件的影响 如果有实现过自己的 ExecutorInterceptor 或 ParameterHandler 类型扩展功能的话,请仔细核查它们内部是否有干扰原有流程的地方。特别是那些试图改变 Statement 执行计划或是修改返回结果集的行为更需谨慎对待以免带来副作用。 最后提醒一点就是升级版本号也很重要哦!随着官方不断优化改进产品本身质量的同时也会修复不少已知缺陷所以适时更新总是没错的选择😊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值