JBossで非同期タスクがサポートされていない場合は、DAO呼び出しを処理するためにスプリングスレッドプールを設定するだけです。
例
<bean id="myExecutioner" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="${executor.ws.poolsize}"/>
<property name="maxPoolSize" value="${executor.ws.poolsize}"/>
<property name="keepAliveSeconds" value="120"/>
<property name="threadNamePrefix" value="WsExecTask-"/>
<property name="allowCoreThreadTimeOut" value="true"/>
<property name="rejectedExecutionHandler" value="#{new java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy()}"/>
</bean>
次に、Webサービスで、上記で定義したExecutorをワイヤリングし、DAO呼び出しをラップするRunnableオブジェクトをexecute()メソッドに渡します。
このソリューションを使用する場合は、必ずThreadPoolTaskExecutorの説明を読み、リジェクトハンドラーの部分を理解してください。