Interoperability between components exists on various levels. In other words, independent technologies residing within a platform such as J2EE can communicate with each other through interfaces designed expressly to allow for application integration. These technologies can also interact across platforms with diverse protocols on other platforms.
The web services container (for example, IBM’s WebSphere Application Server) hosts the application. These containers consist of a number of components that manage transactions, persistence services (saving and storing data to your repositories or hard drive), and application security. The components include servlets, Java Server Pages, and Enterprise JavaBeans. The beans contain business logic and perform business processes when invoked. A container interacts with relational data stores by utilizing the JDBC API Data Access API, or optionally, SQL/J. With the inclusion of the new J2EE connectors, the container also provides connectivity to legacy systems. J2EE leverages SOAP, UDDI, WSDL, and ebXML web services through Java APIs for XML (JAX APIs).
Clients access J2EE applications through web services. Servlets accept web service requests, whereas applets access the Enterprise JavaBean layer through a technology called Internet Inter-ORB Protocol (IIOP).
J2EE uses RMI-IIOP and Java Naming and Directory Interface (JNDI) for access to remote objects. They can also leverage the much simpler lightweight Remote Procedure Call (RPC) request- response technology, provided the client is sending parameters rather than objects to the server. Also, RPCs usually interact with procedural applications, whereas RMI-IIOP provides true interoperability with applications written in non-Java languages.
Web browsers and wireless devices interact with Java Server Pages (JSPs), which provide HTML, XML, or WML user interfaces.