草庐IT

@Async失效情况

全部标签

java - 在没有 HTTP 请求/servlet 的情况下使用 @RequestMapping 功能(URL 到 Java 方法映射)

我正在尝试构建一个简单的PoC来替换当前依赖于加载到主Java(SpringMVC4.2)Web应用程序中的JAR文件的应用程序,以在启动时声明额外的Controller。它看起来很像:ClientGateway+app(SpringMVC+order.jar)Exposedendpoints:/pingviacontrollerincoreSpringapp/orderApp/doSomethingviacontrollerinorder.jar理想情况下,我希望每个JAR文件都是独立的SpringBoot应用程序,使用SpringIntegration4.2(通过AMQP)与面向外

java - 如何在@Async 中捕获事务异常?

使用@Async编写事务方法时,无法捕获@Transactional异常。像ObjectOptimisticLockingFailureException,因为它们在事务提交期间被抛出到方法本身之外。例子:publicclassUpdateService{@AutowiredprivateCrudRepositorydao;//throwsegObjectOptimisticLockingFailureException.class,cannotbecaught@Async@TransactionalpublicvoidupdateEntity{MyEntityentity=dao.f

java - 从内存中清理 Spring Prototype-beans 澄清情况

我想了解是否应该自己手动从内存中清除原型(prototype)beans。在Spring文档中可以看到:“客户端代码必须清理原型(prototype)范围的对象并释放原型(prototype)bean持有的昂贵资源。”由此看来,你应该自己清理prototype-bean。但是。我正在使用VisualVM内存分析器。我已经创建了许多原型(prototype)bean。您可以看到它们的51个实例。然后你可以看到当垃圾收集器清理内存时的情况——所有的prototype-bean都被清除。所以谁能澄清一下情况?prototype-bean是否已被垃圾收集器成功清除,或者我们应该手动清除它们(如

java - 如何在不传递 ID 的情况下识别在哪个 Java Applet 上下文中运行?

我所在的团队开发了一个相当大的SwingJavaApplet。我们的大部分代码都是遗留的,并且有大量的单例引用。我们将它们全部集中到一个“应用程序上下文”单例中。我们现在需要的是创建一些方法来分离共享上下文(在当前显示的所有小程序之间共享)和非共享上下文(特定于当前显示的每个小程序)。但是,我们在调用单例的每个位置都没有ID,我们也不希望将ID传播到所有位置。识别我们正在运行的小程序上下文的最简单方法是什么?(我试过搞乱类加载器、线程组、线程ID……到目前为止,我找不到任何能让我识别调用来源的东西)。 最佳答案 单例狗是邪恶的,你还

java - 需要在不编写包装器的情况下使第三方对象可序列化

我有第三方平台jar,其中的API需要使用网络服务进行测试。这些API采用不可序列化的自定义对象。比方说一些API是这样的。doSomething(CustomIdsomeId,DBLoaderTypetype,DBFilterfilter,booleanexclude)returnsjava.util.List但是这些CustomId、DBLoaderType、DBFilter、SomeNavigationSystem都不是可序列化的对象。有没有一种方法我不需要为所有这些类(有很多这样的类)编写任何额外的类来序列化?如果我为每个业务类编写一个包装器或等效的DTO,那么这将非常不可扩展

java - 在不阻塞 GUI 的情况下为多个线程使用多个进度条

我正在编写一个EclipseRCP应用程序,其中多个线程将通过GUI中各自的进度条向用户更新进度。有人告诉我,允许每个人单独更新自己的进度条可能会导致共享资源发生冲突(我想是进度条的父级之一,例如Shell)。这是真的吗?有人建议我创建一个带有同步方法的中间类,它将充当线程更新调用的序列化漏斗。这是一个解决方案吗?你能提供更好的解决方案吗? 最佳答案 其实很简单。每当您需要从任何线程更新进度条时,您都将更新代码包含在display.asyncExec(newRunnable(){....});

java - 如何在不使用不同的准备语句的情况下处理 NULL 和常规值?

考虑这个简单的方法:publicResultSetgetByOwnerId(finalConnectionconnection,finalIntegerid)throwsSQLException{PreparedStatementstatement=connection.prepareStatement("SELECT*FROMMyTableWHEREMyColumn=?");statement.setObject(1,id);returnstatement.executeQuery();}示例方法应该从某些表中选择列值匹配的所有内容,这应该很简单。丑陋的细节是,无论数据库中有多少行,

java - 如何在不更改算法代码的情况下可视化算法?

我想可视化两种不同的算法,这些算法决定Java中平面中的圆集合是否重叠:一种O(n²)算法,用于检查圆的每个组合使用扫描线的O(nlogn)算法有没有办法让可视化类的对象以某种方式“监听”算法类的对象,例如,它可以看到算法何时在一对圆圈之间执行重叠检查并知道何时更新可视化?其他例子:我可以将Activity圆列表(与扫描线相交的那些)保留为扫描线算法的变量,并让另一个类(可视化类)获取该变量。但是该类如何知道列表何时更新以及它必须更新可视化?这正是我想到的策略。也许有更好的方法... 最佳答案 也许阅读观察者模式可以帮助您:http

java - Spring @Async 抽象在异常处理方面存在漏洞

当使用Spring的@Async注释时,当涉及到方法的throws子句中的(已检查)异常时,抽象是有漏洞的。编译器会强制调用者处理异常,但实际上调用者永远不会看到@Async方法抛出的异常。相反,根据实现,它将由Spring处理和记录,或提供给用户配置的异常处理程序,或在返回值上调用Future#get()时生成。因此,我形成的观点是,@Async方法通常不应抛出已检查的异常。相反,他们应该将所有已检查的异常包装在RuntimeException类型中,以便不存在throws子句。这是一个准确的评估吗?是否有任何工具或编程方法可以修复泄漏?有没有人碰巧知道Spring开发人员对此有何看

java - 原子比较和交换是否可以在看不到惰性写入的情况下覆盖它?

memorymodelsection(17.4)JLS的描述合理详细地描述了volatile和非volatile读写的语义,以及与某些其他结构(例如监视器进入和退出)的交互。但是,它并没有完全解释java.util.concurrent.Atomic*类上的compareAndSwap和lazySet的语义。对于compareAndSet,您确实有来自packagejavadoc的简介:compareAndSetandallotherread-and-updateoperationssuchasgetAndIncrementhavethememoryeffectsofbothreadi