Java Reference
In-Depth Information
POJOs as remote business services. Later, if required, these POJO business components
can also be exposed as web services.
The business services also need security services if they are exposed to external
clients such as the Java Swing-based desktop application used by the retail outlets. This
consideration can be factored into the architecture later, when the customer makes the
final decision on this. Since the remoting is being done over HTTP using servlets, the
same security component used in the presentation tier can be reused in the business tier.
Remote Dispatcher Servlet
This dispatcher servlet intercepts all the remote business logic invocations over the
Hessian protocol. It dispatches the actual invocation on POJO business components.
Business Service Implementations
This layer implements the business interfaces and provides the actual implementation
of the business logic. The business service or the application service layer for the OMS
application will be developed as POJOs.
Data Access Objects
Data access objects (DAOs) encapsulate the interaction with the integration tier. In this
case, the DAOs connect and manipulate data stored in the Oracle RDBMS. For this they
use the JDBC API.
Integration Tier
The integration tier is hosted on an Oracle 10 g database. The DAOs are responsible for
interfacing with this tier. They pass SQL commands to retrieve and manipulate the data
stored in the RDBMS. Note that OMS will not use any stored procedure because the
application does not require any bulk or long-running database operation.
A careful observation of Figure 7-3 will reveal a few missing pieces in the architec-
ture. For example, you may have noticed that I did not include any description about
transaction or logging. Since this is only the first iteration of the project, I was still delib-
erating about these two system aspects. In the case of transactions, the customer was
keen to embed the ObjectWeb JOTM transaction manager. However, I was confident
that the Spring Framework's data source transaction manager implementation would be
sufficient in this case. Hence, I decided to implement the second option as part of the
development task. This would enable me to highlight its benefits such as robustness and
Search WWH ::

Custom Search