Theoretically, there is nothing prohibiting an EJB to being a socket client or performing RMI operations. File I/O performed within an EJB container is the only operation frowned upon. So you could directly call the class from the EJB to open the socket and read the data from within the container.
From a purist perspective, you may want to analyse load and speed to determine whether implementing a pooling service for these socket connections would benefit your application. You would then need to consider building an MBean operated service.
A socket connection pool does give you flexibility to change the socket end-point (if you need to change the port the service is offered on).
In the same VM should give you better speed/response and reduce certain cross-VM complications.
Hope that addresses your questions.