0

jboss EAP 6.4.9.GA 및 jdk 1.7에 commonj workmanager rar를 배포했습니다. Workmanager 참조를 사용하여 여러 파일 업로드의 경우 여러 스레드를 작성합니다. 최대 스레드, 코어 스레드, 대기열 길이가 50 인 Workmanager에 대한 기본 구성이 있습니다. 우리는 일 내가 뭘보고하고하면 된 TaskExecutor는 다음 중 작업을 완료 할 때까지 대기되지 않고있다jboss 스레드의 commonj workmanager가 완료 대기 중입니다.

@Component 
public class RealtimeServiceInvoker 
@Autowired 
private WorkManagerTaskExecutor taskExecutor; 
public Response execute(..).... 
for(FileBean fileBean:fileList){ 
      SampleWork work = new SampleWork(); 
      work.setFileBean(fileBean); 
      colWorkItems.add(taskExecutor.schedule(work)); 
      requestList.add(work); 
     } 

     taskExecutor.waitForAll(colWorkItems, WorkManager.INDEFINITE); 

를 제출, 호출자 클래스에서

<bean id="taskExecutor" 
class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor"> 
<property name="workManagerName" value="java:jboss/wm/default-work-manager" /> 
<property name="resourceRef" value="false"/> 
</bean> 

으로 스프링 XML에 대한 종속성을 정의 단계에서 우리는 Work 객체에서 결과를 가져 오려고 시도하고 예외를 던지고있다.

jboss 6.2 server와 jdk 1.7을 사용하는 로컬 서버에서 동일한 설정이 작동한다는 것은 당황 스럽다.

잘못된 정보를 알려주십시오.

나는 workAccepted 및 WorkStarted에 대한 리스너에 WorkListener에게 또한

taskExecutor.schedule(work,rtWorkListener); 

내가 얻고 로그를 추가했다. Workmanager는 스레드가 완료 될 때까지 기다리지 않습니다. 리스너를 사용하여 스레드가 완료 될 때까지 기다리는 구현 방법이 있다면?

답변

0

jboss 서버에 commonj workmanager를 다시 설치하려고 시도했습니다. 서버에서 workmanager의 이전 버전 일 수 있습니다. 그러나 그 행동은 이상했다.