04.12.2012 Views

Windchill System Administrator's Guide

Windchill System Administrator's Guide

Windchill System Administrator's Guide

SHOW MORE
SHOW LESS

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>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!