Calling different bundles in parallel using ExecutorService
I need to call all those 5 Bundles process method in parallel using
  multithreaded code and then write to the database. I am not sure what
  is the right way to do that? Should I have five thread? One thread for
  each bundle? But what will happen in that scenario, suppose if I have
  50 bundles, then I will have 50 threads?


It is recommended not to have more threads than the number of physical cpu's on that machine in order to be efficient. So if you have 50 Bundles and 8 cores for instances than an ExecutorService with 8 threads should be enough. The bundles will be executed 8 at a time and at most there will be 50/8 rounds of execution. (In real world some of the bundles will execute faster, etc.)


  And also, I want to have timeout feature as well. If any bundles is
  taking lot of time than the threshold setup by us, then it should get
  timeout and log as an error that this bundle has taken lot of time.


You could use a Timer (ScheduledExecutor) on which you register the action to take place in case of a timeout.
On timeout you should iterate the list of futures and cancel the ones that are not done yet.

Otherwise the code looks good enough. I can't see why should not be optimal.