Windchill System Administrator's Guide
Windchill System Administrator's Guide
Windchill System Administrator's Guide
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
communication transport used for the call (HTTP) is not sufficient to handle a call<br />
in the reverse direction.<br />
The <strong>Windchill</strong> architecture addresses these concerns by implementing a<br />
lightweight feedback mechanism into the remote method-invoking protocol. This<br />
is done by allowing feedback objects to be sent from the server to the client as part<br />
of the RMI reply marshaling stream. They are received and processed within the<br />
thread performing the call, and they share the same communication connection as<br />
the call, thus remaining logically coupled to the call itself.<br />
When processing a method invocation from a client, the server-side method is<br />
invoked from within the RMI reply marshaling code, allowing the server-side<br />
method to flush feedback objects onto the reply stream at will. The client reply<br />
unmarshaling code recognizes these objects as feedback and calls their init<br />
methods, then continues to wait for the real reply. When starting a long operation,<br />
the server methods can send a GUI component such as a progress bar and cancel<br />
button. The server can periodically flush additional feedback objects that update<br />
this component. The cancel button is programmed to invoke an operation<br />
canceling method in a second thread capable of interrupting the first thread in the<br />
method server.<br />
User Authorization<br />
To authorize access to a given object or operation, the method server must be able<br />
to reliably identify the user performing the action. Various aspects of user<br />
authentication (securely establishing session credentials) have already been<br />
discussed. These things come together in the method server to allow a method to<br />
inquire about the user associated with the current execution thread. This capability<br />
allows applications to implement access control policies, which are described in<br />
detail in the Administering Access Control chapter.<br />
Java RMI does not provide an inherent means of reliably identifying the calling<br />
user. However, the <strong>Windchill</strong> runtime architecture satisfies this need within the<br />
method server's remote method-invoking interface. Client credentials are<br />
implicitly included with RMI method arguments, and digital signatures are used<br />
to securely associate the RMI thread with an authenticated user name. This<br />
association is established before the target method is called, so method signatures<br />
do not need to contain an extra context or user argument. The information is<br />
retrieved if and when it is needed.<br />
Additionally, the association can be dynamically modified in the course of<br />
executing an operation. For example, it may be necessary to carry out certain steps<br />
of a transaction as a principal other than the user initiating the transaction. To<br />
implement arbitrary authorization delegation schemes, methods are allowed to<br />
push and pop the principal currently associated with the execution thread.<br />
Background Processing<br />
<strong>Windchill</strong> provides for background processing through the use of background<br />
method queues stored in the database. The queues are tables of method invocation<br />
A-16 <strong>Windchill</strong> <strong>System</strong> Administrator’s <strong>Guide</strong>