m******c 发帖数: 830 | 1 看这儿牛人多,想跟大家请教一下工作中遇到的问题,
1. 我们想clean 一个project中 unused mvn dependencies。试了mvn的dependency:
analyze,但是我remove里面unused会导致build failure。有做过的同学给点建议好吗?
2. 在一个java EE project 里,怎么做concurrency呢?比如,1和2可以parallel做,
3要等到1和2的结果出来看是否做。除了messaging,我看Spring里有个task scheduler,
http://static.springsource.org/spring/docs/3.1.1.RELEASE/javado
还有别的选择吗?
多谢大家指点 |
t*******e 发帖数: 684 | 2 第一个,没用过,不知道
第二个,有long running processes, 象integration work flow,用spring
integration里面的splitter和aggregator,选择适当的release strategy。
吗?
scheduler,
【在 m******c 的大作中提到】 : 看这儿牛人多,想跟大家请教一下工作中遇到的问题, : 1. 我们想clean 一个project中 unused mvn dependencies。试了mvn的dependency: : analyze,但是我remove里面unused会导致build failure。有做过的同学给点建议好吗? : 2. 在一个java EE project 里,怎么做concurrency呢?比如,1和2可以parallel做, : 3要等到1和2的结果出来看是否做。除了messaging,我看Spring里有个task scheduler, : http://static.springsource.org/spring/docs/3.1.1.RELEASE/javado : 还有别的选择吗? : 多谢大家指点
|
z*******3 发帖数: 13709 | 3 第一个命令没有用过哦,不过你可以看看为啥编译失败
少了什么类,然后看看这个类在那个jar里面,可以用eclipse帮忙看jar里面的类结构
说第二个,一般来说,javaee不会自动启动线程
都是托管给web server or ejb container
如果你想做异步操作的话
可以考虑用一些java.util.concurrent里面的类
举个例子
ejb:
两个request进来,并行处理1&2,ejb 1和ejb 2
ejb 1处理完就把1放在内存某一个对象里面,此时看2是否已经搞定
如果搞定调用容器里另外一个ejb处理3
如果没搞定,则返回
同理
ejb 2处理完了就把2放在内存同一个对象里面,此时看1是否已经搞定
如果搞定调用容器里另外一个ejb处理3
如果没搞定,则返回
spring类似
其实就是把3合并到1或者2里面去做
另外ejb有@Asynchronous,spring有@Async
1和2可以通过这种方式先启动3,之后立马返回
然后等3搞定了之后,再回头取结果
这样就不用message了 |
z*******3 发帖数: 13709 | 4 如果你的1和2都是同一个request进来的话
那通过容器调用两个@Asynchronous的ejb执行1和2
或者通过spring框架调用两个@Async的beans执行1和2
然后等结果,等到结果之后执行就好了
跟上一个区别就在于@Asynchronous这个annotation放在ejb1和ejb2上还是ejb3上 |
g*****g 发帖数: 34805 | 5 1. It may be used indirectly if you are getting compilation error, try
mvn dependency:tree -Dverbose -Dincludes=your-lib
2. For plain java, use FutureTask and blocking on it by get(). If you use
spring @Async, check AsyncResult. and get(). If your requirement is more
complicate, you may want to check CountDownLatch and CyclicBarrier.
吗?
scheduler,
【在 m******c 的大作中提到】 : 看这儿牛人多,想跟大家请教一下工作中遇到的问题, : 1. 我们想clean 一个project中 unused mvn dependencies。试了mvn的dependency: : analyze,但是我remove里面unused会导致build failure。有做过的同学给点建议好吗? : 2. 在一个java EE project 里,怎么做concurrency呢?比如,1和2可以parallel做, : 3要等到1和2的结果出来看是否做。除了messaging,我看Spring里有个task scheduler, : http://static.springsource.org/spring/docs/3.1.1.RELEASE/javado : 还有别的选择吗? : 多谢大家指点
|
z*******3 发帖数: 13709 | 6 EJB 1:
@Asynchronous
public Future exe1() ...
EJB 2:
@Asynchronous
public Future exe2() ...
EJB 3:
public void exe(){
Future e1 = ejb1.exe1();
Future e2 = ejb2.exe2();
String s1 = e1.get();//此时线程会blocked等待ejb1执行
String s2 = e2.get();//拿到s1之后,s2要么已经搞定,那此时直接取结果,要么还
在执行中,那此时线程会在这里blocked并等待ejb2执行
}
spring类似 |
t*******e 发帖数: 684 | 7 不错。就是不durable。如果是简单的function call用老赵和goodbug的方法。如果是
要花几分钟,甚至几个小时的,用integration framework。
【在 z*******3 的大作中提到】 : EJB 1: : @Asynchronous : public Future exe1() ... : EJB 2: : @Asynchronous : public Future exe2() ... : EJB 3: : public void exe(){ : Future e1 = ejb1.exe1(); : Future e2 = ejb2.exe2();
|
z*******3 发帖数: 13709 | 8 如果是这么久的话,要上workflow engine
因为时间等待太久的话,http和ejb的session都会expire
要调用ejbPassive方法做持久化处理,然后再用ejbActive方法读取资源
从来没用过的说……
【在 t*******e 的大作中提到】 : 不错。就是不durable。如果是简单的function call用老赵和goodbug的方法。如果是 : 要花几分钟,甚至几个小时的,用integration framework。
|
g*****g 发帖数: 34805 | 9 Future can block forever, it will work as long as there's no network
connection involved. If you have tons of such threads, you'd consider an
asynchronous framework. e.g. Netty, Akka.
【在 t*******e 的大作中提到】 : 不错。就是不durable。如果是简单的function call用老赵和goodbug的方法。如果是 : 要花几分钟,甚至几个小时的,用integration framework。
|
u****s 发帖数: 2186 | 10 2.可以试试CountDownLatch
吗?
【在 m******c 的大作中提到】 : 看这儿牛人多,想跟大家请教一下工作中遇到的问题, : 1. 我们想clean 一个project中 unused mvn dependencies。试了mvn的dependency: : analyze,但是我remove里面unused会导致build failure。有做过的同学给点建议好吗? : 2. 在一个java EE project 里,怎么做concurrency呢?比如,1和2可以parallel做, : 3要等到1和2的结果出来看是否做。除了messaging,我看Spring里有个task scheduler, : http://static.springsource.org/spring/docs/3.1.1.RELEASE/javado : 还有别的选择吗? : 多谢大家指点
|