Package net.jini.print.service
contains interfaces
for a Jini Print Service instance's
service proxy object.
Single Doc Print Jobs
The above interaction diagram
shows the interfaces involved
in printing a job
consisting of just one doc.
("Doc" is a short, easy-to-pronounce term
that means "a piece of print data.")
Interfaces declared in package net.jini.print.job
are highlighted.
The Jini Print Service instance
supplies the Print Service, Print Request, and Print Job objects,
and the client supplies the Doc object.
-
The client searches the Jini Lookup Service (JLUS)
for a Jini Print Service instance,
and the JLUS returns a Print Service object
which implements the base interface
PrintService.
(See package net.jini.print.lookup.)
-
The client calls a method in interface
PrintService
telling the printer
to create a Print Request to print a single Doc.
The printer then returns
a Print Request object
which implements interface
DocPrintRequest
as well as the base interface
PrintRequest.
-
The client calls methods in interfaces
PrintRequest and
DocPrintRequest
to specify the doc object to be printed
and a set of job-level printing attributes to use for the job.
The client can also register event listeners
to receive event notifications for the job.
Finally, the client calls a method to submit the Print Request
to be printed,
and the printer returns a Print Job object
which implements interface
PrintJob.
(See package net.jini.print.job.)
-
The printer calls methods in interface Doc
to obtain the print data format,
the document-level printing attributes,
and the actual print data,
then proceeds to print the job.
(See package net.jini.print.data.)
-
The client calls methods in interface
PrintJob
to monitor the Print Job's progress
and control the Print Job as the printer processes it.
The client can also register event listeners
to receive event notifications for the job.
Alternatively,
if the client doesn't need to monitor or control the job,
the client can simply disregard the returned Print Job object.
(See package net.jini.print.job.)
Multiple Doc Print Jobs
The above interaction diagram
shows the interfaces involved
in printing a job
consisting of more than one doc -- a "multidoc."
It is much the same as the previous scenario,
except a few different interfaces are involved.
-
The client searches the Jini Lookup Service (JLUS)
for a Jini Print Service instance,
and the JLUS returns a Print Service object
which implements interface
MultiDocPrintService
as well as the base interface
PrintService.
(See package net.jini.print.lookup.)
-
The client calls a method in interface
MultiDocPrintService
telling the Print Service
to create a Print Request to print a MultiDoc.
The printer then returns
a Print Request object
which implements interface
MultiDocPrintRequest
as well as the base interface
PrintRequest.
-
The client calls methods in interfaces
PrintRequest and
MultiDocPrintRequest
to specify the multidoc object to be printed
and a set of job-level printing attributes to use for the job.
The client can also register event listeners
to receive event notifications for the job.
Finally, the client calls a method to submit the Print Request
to be printed,
and the printer returns a Print Job object
which implements interface
PrintJob.
(See package net.jini.print.job.)
-
The multidoc provides a "linked list view"
of the docs to be printed.
The printer calls a method in interface
MultiDoc on the current multidoc object
to get the current doc to be printed.
(See package net.jini.print.data.)
-
The printer calls methods in interface Doc
on the current doc object
to obtain the print data format,
the document-level printing attributes,
and the actual print data.
(See package net.jini.print.data.)
-
The printer calls a method in interface
MultiDoc on the current multidoc object
to get the next multidoc object,
and repeats from Step 4 until it has gotten all the docs.
The printer then proceeds to print the job consisting of all the docs.
(See package net.jini.print.data.)
-
The client calls methods in interface
PrintJob
to monitor the Print Job's progress
and control the Print Job as the printer processes it.
The client can also register event listeners
to receive event notifications for the job.
Alternatively,
if the client doesn't need to monitor or control the job,
the client can simply disregard the returned Print Job object.
(See package net.jini.print.job.)
Package net.jini.print.service's Role
Package net.jini.print.service's role in the Jini Print Service API is to:
-
Declare the PrintService interface,
which is the base interface
all Jini Print Service instances' service proxy objects implement,
whereby the client uses the print service
to create a Print Request object to print a single doc --
a "doc print request."
Interface PrintService
also contains methods to monitor the Print Service's status
and to discover the Print Service's capabilities.
-
Declare the MultiDocPrintService interface
whereby the client creates
a Print Request object to print multiple docs --
a "multidoc print request."
-
Declare the LocalizedPrintService interface
whereby the client can obtain localized strings
for print data formats, printing attribute categories,
and printing attribute values.
The following UML class diagram
shows the relationships among the interfaces and classes
described above.
Package net.jini.print.service also includes
these supporting classes:
-
Remote event object
for reporting events pertaining to a Print Service --
class PrintServiceEvent.
-
Exception class thrown by methods
in package net.jini.print.service --
class PrintServiceException.
All Jini Print Service instances must be capable
of creating doc print requests.
Thus, all Jini Print Service proxy objects
mandatorily implement interface
PrintService.
However, creating multidoc print requests
is an optional capability
that not all Jini Print Service instances
are required to provide.
If a Jini Print Service instance
can create multidoc print requests,
its service proxy object implements interface
MultiDocPrintService
as well as
PrintService.
A Jini Print Service instance
advertises the kinds of Print Requests it supports
by the interfaces its service proxy object implements.
To get a Jini Print Service instance
that can print your kind of job,
make sure to search the JLUS
for the proper service interface.
To print a job with a single doc,
search for a service that implements interface
PrintService.
To print a job with multiple docs,
search for a service that implements interface
MultiDocPrintService.
See the print service lookup scheme in package
net.jini.print.lookup
for further information.
Future Capabilities
The following Print Service capabilities
will be added
in future versions of the Jini Print Service API:
-
Examine print job queue.
-
Dynamic printer control (pause, resume, purge jobs, etc.).
Placement of this package under package net.jini.print
is preliminary and not yet approved by the Jini Community.
DRAFT STANDARD VERSION 1.0 (23-MAY-2000)