SOA is about integrating heterogeneous applications or composing business processes from lower level services.
Can we realize complete SOA solution in a large enterprise where applications cross departmental and ownership boundaries using only state of the art JMS provider that supports both Java and non-Java JMS clients and using web services and application servers at various integrations points if needed without using more complex ESB product?
Integration architect with good industry experience can best answer this question.
Yes – an ESB is not necessary to implement SOA.
Preferably, use Web Services over JMS for implementing your services.
Some issues that are commonly addressed by ESB, that you should be aware of:
Adapters
When using legacy service provider or client that don’t support the relevant technologies (JMS, SOAP,…) the ESB can act a an adapter for them – in your case all you services and clients should support these technologies them self, or you’ll need to implement an adapter.
Routing
The ESB acts as a router, hiding the physical address of the service provider.
you should use a strict Queue \ Topic naming convention to ensure consistency and maintainability of your solution.
consider coexistence of multiple environments and versions when planing the naming scheme.
Service Registry
You should have some kind of registry with the specs of all services.
some issues that are not easily supported are
Content Based Routing
Central Logging \ Policy enforcement \ Auditing