Escolar Documentos
Profissional Documentos
Cultura Documentos
Version 1.3
October 7, 2009
Note: If you have one or more of these applications already installed then you may have to change some of the
examples shown below to match your existing configuration.
Be sure to configure Tomcat so that it has enough memory. The default install doesn’t ask you about
memory allocations, but you can bring up the Tomcat configuration tool after it is installed. Navigate to
the “Java” tab and set the initial memory size to 256 and the maximum memory size to 1600 (the
maximum allowed on 32 bit Windows systems). This is enough to package almost any ebook.
Note: Some versions of Tomcat require the Microsoft DLL msvcr71.dll, but they don’t include it in the
install. You can get it here.
4. Now install the MySQL database. It will ask you if you want to install “Typical” or “Complete”. Either one
is OK. When it has finished, it will offer to run its configuration utility. Accept that and let it run. First
question is whether you want “Detailed Configuration”. Accept that. Next it will ask you if you are
running on “Developer Machine” or “Server Machine” or a “Dedicated Server”. Answer as appropriate.
Next it will ask you what type of database you want. Be SURE to answer “Transactional Only”. This is very
important. It will then ask you what drive it should install on. Answer as appropriate. MySQL will then
ask whether to enable TCP/IP connections and strict protocols. Answer yes to both. The next question is
Finally, it will offer to perform the configuration. Press the “Execute” button. And then when it is done,
press “Finish”.
Note that the database is installed on your local machine, so can be addressed via “localhost” (IP
address 127.0.0.1 on port 3306 - unless you chose some other port).
5. Now, install the PHP scripting language, if you are planning on testing out the Sample Store (in which case
you must have installed Apache HTTP web server earlier). PHP will offer to install in Program Files. That’s
fine. It will then ask to set up with which web-server. Check the button next to Apache 2.2.x module. It
will then prompt you for the Apache configuration folder. Assuming you let Apache install in the defaults,
the config folder is
C:\Program Files\Apache Software Foundation\Apache2.2\conf\
PHP will then prompt you about what it should install. Accept the defaults. Press Install to let it finish.
6. Last but not least, you need to install the JDBC driver for MySQL to use. You can download the driver,
mysql-connector-java-5.1.7.tar.gz from here. This file needs to have the jar file it contains
unpacked and be copied to the lib folder of your Tomcat installation, e.g.
C:\Program Files\Apache Software Foundation\Tomcat 6\lib
Why there? Because the packaging service of ACS4 is a servlet and it needs to talk to the MySQL
database to package books. So it needs Tomcat (which loads the servlet) to load that driver. And that
folder is where Tomcat looks first for the driver.
That’s it for the system application installs! Now we’re ready to set up the Content Server itself.
Note the semicolon at the end; this is required to ensure the command is executed.
Once you have a database, you need to create a user account to use for ACS administration and assign the proper
privileges. The easiest way to do this is to use the MySQL Administrator, the GUI client. You need to create the
ACS administration user. Then you need to assign all SQL operations to that user. Finally, you need to set the
permitted operations per hour. We suggest setting this quite high (e.g. 10,000 operations per hour).
For this example case, we created the user klaatu and the password is nikto. Of course, you should pick your
own username and password.
Remember your ACS Administrator Database User Name and Password!
ACS3toACS4convert_4_0_18.zip
admin-conf.txt
admin.war
ContentServer_Release_Notes.pdf
ContentServer_Technical_Reference.pdf
ContentServer_UserManual.pdf
fulfillment.war
fulfillment-conf.txt
operatorClient.jar
packaging-conf.txt
packaging.war
sample_books.zip
sample_store-20080908.zip
UploadTest-1_1.jar
UploadTest-1_1.zip
Note: UploadTest-1_1.jar and the configuration files were not in the original release but are in subsequent
releases.
First step is to “deploy” the WAR files. This is just a fancy way of saying copy them to where the servlet container
(Tomcat) can find them. On a full-scale production server, “moving” files is a complex process so “deploy” makes
sense, but in this case we can just copy them to the webapps folder of Tomcat, i.e., to:
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps
Note that the WAR files are just a special kind of zip file that Tomcat knows to look inside of to find what it needs.
Adobe Confidential Page 7 of 21
Getting the P12 File
Next thing to do is get your Operator/Fulfillment server URL certificate set up. The Operator/Fulfillment server
URL is the URL for the fulfillment server. To set up the Operator URL, you’ll need to have OpenSSL. On Linux® and
Mac OSX it comes pre-installed. On Windows, however, it doesn’t. So you need to install it. Oddly, the easiest
way to do this is to install a UNIX emulator called Cygwin that will install it for you. You can download Cygwin
here. Cygwin’s installer is a little odd, but there is a simple walkthrough of how to install it here. One tip, be sure
to select both OpenSSL and the OpenSSL runtime. Also, be sure to add Cygwin’s bin folder to the Windows PATH
variable or you’ll have to use the Cygwin shell rather than Window’s DOS prompt.
Note: There was a bug in version 0.9.8h of OpenSSL that caused fatal errors. But the current Cygwin installs
0.9.8i, which doesn’t have that bug. If you have 0.9.8h you’ll need to upgrade.
Once OpenSSL is installed, you need to create the PKCS10 file. Here are the steps.
1. The License Signing service needs a certificate signing request in PKCS10 format. The following line uses
OpenSSL to create an RSA Keypair and a CSR in PKCS10 format:
openssl req -newkey rsa:1024 -out operator.pkcs10 -keyout operator.key
2. You then need to answer questions on the command line - it doesn’t really matter what you enter as
those values will be overwritten in the certificate creation process on the License Signing server.
So, as an example, one might see this, where to the left of the colon is the SSL prompt and to the right is
what you enter:
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: California
Locality Name (eg, city) []: San Jose
Organization Name (eg, company) [Internet Widgets Pty Ltd]: MyCompany
Organizational Unit Name (eg, section) []: MyGroup
Common Name (eg, YOUR name) []: My Name
Email Address []: my_email@my_domain.com
3. You will then see the following prompt and two more questions. DON’T answer them, just hit the return
key for each one. They are not needed, and OpenSSL has been known to crash if you do answer them!
Please enter the following 'extra' attributes to be sent with your certificate request.
A challenge password []: <hit return key>
An optional company name []: <hit return key>
4. You will then be prompted to enter a password (and then confirm it). Be sure to remember this password!
Remember your Operator/Fulfillment server URL Certificate Password!
5. The result of this is the file operator.pkcs10, which will contain the certificate request (to be uploaded to
Adobe) and the file operator.key, which will contain the password-protected private key.
6. Next, you need to upload those files to Adobe using the operatorClient. In the zipfile is the file
operatorClient.jar. Extract it from the zip file. You can start the operatorClient by double-clicking or
opening a DOS prompt window, navigate to that folder and enter:
java -Xmx1024M –jar operatorClient.jar
In the next few steps (through step 11) you will use the operatorClient interface to set parameters and
upload the certificate request and then receive the certificate back from Adobe.
7. The Authentication URL should be
http://adeactivate.adobe.com/adept
This is the default, but verify that it is correct.
10. Now you need to add the Operator/Fulfillment server URL. Pick an Operator/Fulfillment server URL
appropriate for your own installation.
Go to the Operator URLs tab. Enter the URL that you will be using for your fulfillment server. If the port
you are using is 80 for HTTP (or 443 for HTTPS), you may omit the port. But if you are using a different
port, the value of the port must be specified as well, e.g. http://gort.corp.adobe.com:8080. The URL
must include the full path to the fulfillment service e.g.
http://gort.corp.adobe.com:8080/fulfillment and not http://gort.corp.adobe.com/
NOTE: Using ‘localhost’ might seem convenient but is not allowed. Use of ‘localhost’ for fulfillment is
reserved for Adobe. You can use ‘localhost’ for packaging (as we will show below).
11. Once you have entered the correct Operator/Fulfillment server URL, press the “Choose” button and
navigate to and select the pkscs10 file you created before. The “Result File” will be automatically entered
for you. When you are sure it is correct, press “Add”. This will make a call to the Adobe servers, which
will create and download the operator.cer file. This will take a few seconds.
12. The LicenseSigning service returns the certificate in DER format. OpenSSL p12 packaging requires the
certificate to be in PEM format. To convert from DER to PEM use the following OpenSSL command
openssl x509 -in operator.cer -inform DER -out operator.pem -outform PEM
13. Assuming you named the output file operator.pem then run this command to package the certificate and
the key together:
openssl pkcs12 -export -in operator.pem -inkey operator.key -name operator –out operator.p12
The result of this should be the file operator.p12. Verify that it is in the folder.
It is important to note that the parameter –name operator specifies, as implied, the name of the operator.
So when you set up your fulfillment configuration you will need to specify the location of the
operator.p12 file, the name of the “operator” of that file and the password. In the above example the
name is operator. But the name can be any one you like.
Note: There is a bug in ACS version 4.03 that requires you to use the exact name operator instead of any
other name. This has been fixed in later versions of ACS.
There are two WARs (i.e. fulfillment.war and packaging.war) which are the source of the fulfillment and
packaging services. The admin.war is the source for the Admin Console. The property files in each WAR are
identical except for the name of the optional external properties file. By default, these files are named (on
Windows)
admin-conf.txt
fulfillment-conf.txt
packaging-conf.txt
And they are located, by default, in C:\config on Windows and /etc on Linux. It is possible to unpack the
WAR file and change the property file, but it is strongly discouraged. Just create the folder c:\config and put
the configuration files there.
Note that if you want to put comments in the configuration files you can do so by placing a # symbol at the
beginning of the line. That line will be ignored. Blank lines are also ignored.
Now, the configuration files supplied with the release come with the required fields, but none of them have any
values filled in. Clearly, that won’t work, so let’s add the proper values. First, we’ll set up the Admin Console
configuration since it is the simplest to start with and the others are essentially extensions of it.
The first two lines in the admin-conf.txt file are about what to log and where to put that information:
com.adobe.adept.log.level=trace
com.adobe.adept.log.file=C:\acs4\log\adminconsole.log
“trace” (which is the default) means that a fair amount of information will be written to the file. The other
possible values are “error”, in which case ONLY errors are written to the log, and “info”, in which case a LOT of
data will be written to the file. The location is where the file will actually be written.
The next three lines specify the type of database and hence the driver, the “dialect” of SQL to be used and the
path through which Content Server can find it.
com.adobe.adept.persist.sql.driverClass=com.mysql.jdbc.Driver
com.adobe.adept.persist.sql.dialect=mysql
com.adobe.adept.persist.sql.connection=jdbc:mysql://127.0.0.1:3306/adept
Note: These examples use the database name adept, but if you are using your own database (which is
presumably not named adept) then you should substitute your database’s name.
In this example, we are using MySQL with Java, so the driver is com.mysql.jdbc.Driver. The dialect of SQL is
mysql. The connection is also jdbc:mysql. Note that the address of the database (in this example) is
“localhost”. The port is the one you specified when you set up MySQL. The name of the database is always the
name of the database you are using (in these examples, adept).
The last line in the file is the URL to where the admin.war can be found, complete with the port (if it is not port
80). When entering the Admin Console service URL in the configuration files there should be no spaces before or
after the URL. And that’s it.
So the admin console configuration file looks like this (except that it should use the service URLS, user name,
password, and file locations you selected):
com.adobe.adept.log.level=trace
com.adobe.adept.log.file=C:\acs4\log\adminconsole.log
com.adobe.adept.persist.sql.driverClass=com.mysql.jdbc.Driver
com.adobe.adept.persist.sql.connection=jdbc:mysql://127.0.0.1:3306/adept
com.adobe.adept.persist.sql.dialect=mysql
com.adobe.adept.persist.sql.user=klaatu
com.adobe.adept.persist.sql.password=nikto
com.adobe.adept.serviceURL=http://gort.corp.adobe.com:8080/admin
You must always restart the Tomcat service after modifying the configuration files (since they are only read during
the Tomcat startup), so restart Tomcat now.
You can now test that the admin.war is properly configured. Go to a browser and enter the Admin Console
service URL you specified in the configuration file plus /statuscheck, e.g.
http://gort.corp.adobe.com:8080/admin/statuscheck
to get more detailed information. (Note that it is spelled Status starting in upper case, and that URLs are case-
sensitive.) The most common problem of configuration is simply mistyping an address or value. Also check for
trailing spaces or spaces around the equals sign for properties and remove them. Double check all the values.
Also, remember that if you change the config file you must stop the Tomcat service and restart it, since it already
read the configuration files when it started up, so you need to force it to refresh.
As a final test that you have the configuration for the Admin Console set up correctly, let’s start it up. To launch
the admin console, enter into your browser the path to the admin console, e.g.
http://gort.corp.adobe.com:8080/admin/console
Note: The client machine must have Flash Player 9 (or higher) installed to run the Admin Console application.
The Admin Console isn’t too interesting right now because you haven’t packaged any books yet. But wait, there’s
more…
Now let’s set up the fulfillment service configuration. The configuration file fulfillment-conf.txt is basically
the same information (the “common settings”) plus the properties specific to fulfillment. Note that while it might
seem convenient to combine the configuration files, this is strongly discouraged. This guide is walking you
through the most basic (and common) setup, but there are many other available properties and some of them
are used by all three services, so having only one configuration file would preclude having service-specific
settings.
The first two lines are again about what to log and where to put that information:
com.adobe.adept.log.level=trace
com.adobe.adept.log.file=C:\acs4\log\fulfillment.log
The first line that differs from the admin console configuration file is the URL to the actual Content Server
fulfillment server:
com.adobe.adept.serviceURL=http://gort.corp.adobe.com:8080/fulfillment
This URL must include the port info if it is not port 80. In this case, Tomcat is on port 8080 so we need to include
this. This URL must match exactly that which was specified when the certificate was created (see page 9, step
10). Do not use spaces before or after the equal sign, as this will cause a problem when determining if the URLs
match.
The first new property specifies which of the two license-signing services Content Server will call to get licenses
signed. If you are in Canada or the US, you should specify:
com.adobe.adept.fulfillment.security.licensesignURL=https://nasigningservice.adobe.com/licensesign
Otherwise, specify
com.adobe.adept.fulfillment.security.licensesignURL=https://eusigningservice.adobe.com/licensesign
The user name is the operator name that you specified (see page 9, step 13) when you created the p12 file. The
password is the one you specified when you created the p12 file (see page 8, step 4). Also it is important when
specifying the location of the pcks12 file to not have spaces before or after the file name itself, i.e. don’t do:
com.adobe.adept.fulfillment.security.pkcs12.file= file:///C:/ACS4p12/operator.p12
Don’t forget to restart Tomcat after changing any of the configuration files. So restart Tomcat now.
Again, the URL to the fulfillment status would be
http://gort.corp.adobe.com:8080/fulfillment/statuscheck/
The packaging service configuration file packaging-conf.txt, like the fulfillment configuration file, is the same as
the admin console configuration file with the addition of the packaging-specific properties. The service URL is of
course pointing to the packaging WAR:
com.adobe.adept.serviceURL=http://gort.corp.adobe.com:8080/packaging
The next two lines specify the destination of the packaged file and how it will be deployed for download. The
baseLocation property in the configuration file specifies the location on the destination server’s storage where
the book will be placed. The baseURL property determines at what apparent URL the book will be.
Note that the baseLocation has to be relative to the Tomcat instance. The default installation of Tomcat is
C:\Program Files\Apache Software Foundation\Tomcat 6.0
so Tomcat addressing is relative to that location.
So if you want the baseLocation to be ‘media’, then the baseLocation property has to be relative to the
ROOT folder of the Tomcat folder, e.g.
.\webapps\ROOT\
So for example, if the baseLocation is .\webapps\ROOT\media and the baseURL is
http://gort.corp.adobe.com:8080/media
then when the book foo.epub is added it will be at the path
.\webapps\ROOT\media\foo.epub
and will be available (via Tomcat services) at
http://gort.corp.adobe.com/media/foo.epub
Of course, this is a function of how the Apache HTTP and Tomcat services are configured, but the above is true for
the set up described here.
Restart Tomcat one more time then check the status of the packaging service. The URL to the packaging status
would be:
http://gort.corp.adobe.com:8080/packaging/statuscheck/
Packaging Books
The packaging tool is simple command line tool written in Java that makes the appropriate calls to the packaging
service’s web-service APIs. The tool is provided as source code (as well as the pre-built jar file). The input to the
tool is an unencrypted book and, optionally, some metadata. The result is the encrypted book is written to the
place specified by the packaging configuration (the baseLocation) and the data about the book (its key, location,
URL, etc.) are written to the Content Server database. Once the book is “packaged” and the metadata is in the
database, you can deploy the book off to distributors (bookstores, libraries). This will be covered in the next
section.
The first step is to get some books to package. Included in the release zip in the file sample_books.zip is a set of
public domain books in PDF and EPUB formats, as well as book-cover images and XML packaging files. Unzip
that file to some convenient location (e.g. C:\ACS4\srcbooks).
The packaging tool can be used to package individual books by themselves, though it is often more convenient
to use a helper file that defines a packaging request for multiple books. But we’ll start out by packaging an
individual file. The inputs to the tool are the URL to the packaging service, the path to the book itself and the
password. So if one navigates to the folder the books are in and enters
java –Xmx1024M –jar UploadTest-1_1.jar http://gort.corp.adobe.com:8080/packaging/Package
srcbooks\MonteCristo.epub –pass barada
A few notes:
• The parameter –Xmx1024M tells the Java Virtual Machine (JVM) to allocate 1 GB for the process. This isn’t
needed for small files, but large complex files may fail otherwise (and the JVM will often emit bizarre,
misleading messages when it runs out of memory). For very large files you may want to allocate even
more memory.
• Note that the tool needs to address the Package service inside the packaging WAR, hence the
packaging/Package in the URL
• The final parameter is the Content Server Built-in Distributor password for the Content Server services.
This password is the same one that you set when you first started the Admin Console (in these examples
it is barada, see page 12). So if you run the packaging tool before launching the Admin Console, the
password would be the default password, i.e. park345. Remember that this password is the Content
Server Built-in Distributor password and the line above must always use the current password value.
• The above example passes in the relative path to the book, i.e. srcbooks/MontteCristo.epub) but you
can also specify the fully qualified path, e.g. c:\ACS4\srcbooks\MonteCristo.epub)
Adobe Confidential Page 14 of 21
This is the most basic use of the tool, illustrating the required parameters. However, it supports an additional
number of optional parameter flags:
Metadata:
title the argument contains the dc:title value
creator the argument contains the dc:creator value
publisher the argument contains the dc:publisher value
format the argument contains the dc:format value
Miscellaneous Flags:
png looks for fileNameNoExt.png to upload as a thumbnail
jpeg looks for fileNameNoExt.jpeg to upload as a thumbnail
jpg looks for fileNameNoExt.jpg to upload as a thumbnail
gif looks for fileNameNoExt.gif to upload as a thumbnail
xml looks for fileNameNoExt.xml to use as XML source
verbose displays content of package request and detailed server response
version displays tool's version number
? displays the list of accepted command-line flags
will package the book and set the title to 1984 and the publisher to Gutenberg. It will also cause the tool to look
in the specified folder for the file 1984.jpg and it will be uploaded to the destination folder (i.e. baseLocation).
Although the above works, it can get rather cumbersome, so the parameters can also be passed in an XML file
that contains the packaging information. So for example, the following command:
java –Xmx1024M –jar UploadTest-1_1.jar http://gort.corp.adobe.com:8080/packaging/Package
srcbooks\theArtofWar.pdf –pass barada -xml -jpg
will cause the file theArtofWar.pdf to be packaged and the file theArtofWar.jpg to be placed in the same
destination folder. It will also cause the tool to load the file theArtofWar.xml from the same folder and read the
metadata and permissions from it.
The theArtofWar.xml contains the following:
<package xmlns="http://ns.adobe.com/adept">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:format> application/epub+zip</dc:format>
</metadata>
<permissions>
<display>
<device/>
<until>2013-01-13T13:10:49-07:00</until>
</display>
<excerpt>
<until>2013-01-13T13:10:49-07:00</until>
</excerpt>
<print>
<count initial="10" max="20" incrementInterval="3600"/>
<maxResolution>300</maxResolution>
</print>
</permissions>
</package>
Finally, what about REALLY BIG files? The way the packager works is that in the normal case (as above) the file is
converted to a huge blob of XML (that is base-64 encoded) and sent over to the packaging web service. The
problem with this is that base-64 encoding inflates the number of the bytes in the book by about 33%. So if you
have a large books (say 100 MB or larger) this starts to get really large. It’s even worse than that, but you see the
problem.
The solution is to send the location of the file to the packaging service rather than the actual bytes. Then the
packaging service can fetch the bytes a chunk at a time until it has packaged the book. Well, you might ask, why
isn’t that the standard way of packaging books? The problem is that the packaging service can only load the
bytes if it can get to them (since it uses the file-system to fetch the bytes), so the file has to be on the same
machine as the packaging service. If the normal method is used, then the source of the files can be on a different
machine from the packaging service.
But if you have a really large book or set of books, the solution is to use the datapath approach. This consists of
three parts. First, you have to specify datapath on the command line. Second, on the command line, instead of
specifying the name of the file, you specify the name of the folder where the XML file can be found. Third, you
need to add a new element to the XML file, the dataPath element. Note that the command line parameter is
datapath and the element is dataPath (P is capitalized in the element name).
So, suppose you have a really large file called humongous.pdf. And it is in a folder c:\ACS4\ oversize. Then
your XML file (named humongous.xml) would look like
<package xmlns="http://ns.adobe.com/adept">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:format> application/epub+zip</dc:format>
</metadata>
<permissions>
<display>
<device/>
</display>
</permissions>
<dataPath>C:\ACS\oversize\humongous.pdf</dataPath>
</package>
Note that the path to the file in the dataPath element must be complete, i.e. it cannot be relative to the folder
from which you invoke the command since the packaging service is somewhere else. Then your command line
would look like (using the example service URL):
java –Xmx1024M –jar UploadTest-1_1.jar http://gort.corp.adobe.com:8080/packaging/Package
oversize -datapath –pass barada -xml
Note that the tool will process ALL the XML files in the folder, trying to package all of the files referenced by the
XML files. Also, just like the case above when you specify the folder to process all files (even though they may
not be dataPath elements), the packaging tool will look for a thumbnail file with the same name as the file to be
packaged. So if there were a thumbnail with the name humongous.gif in the folder oversize, it would be attached
to the book in the database even though the command line doesn’t have –jpg or any other reference to a
thumbnail.
Note: Very large book files (> 100MB) require more physical memory and large Java memory settings for the
servlet container to handle them. Be sure to optimize your book files, especially scanned book files, using Acrobat
or another tool – this can reduce the size of a book significantly (often by a factor of 2x to 4x or more). A smaller
book file will reduce user download times and reduce the likelihood of download communication errors for users.
And that’s it. The store is installed. Now let’s set it up.
Go back to the Admin Console in the Distributor’s panel. Click on the “Export Sample Site” button. You will see a
dialog like this (without the URL filled in)
This dialog’s workflow is a little odd, so let’s walk through it. You need to perform two operations:
• Export the Catalog XML file (books.xml). This is what it suggests, an XML file that contains all books that
are assigned to the specified distributor.
• Store Config XML file (config.xml). This sets up the configuration file for the store.
Select the radio-button next to the Catalog XML label and press “Next”. This will display a “SaveAs” file dialog
prompting you to select a location where the catalog.xml file should be saved. You must save the file into the
same folder where you unpacked the Store files (in htdocs/bookstore).
Then select the radio-button next to “Store Config”. Where it says “Enter link URL”, enter the exact link to the
fulfillment service for Content Server. The store will construct the necessary link for fulfillment for this info, so it
must include the port (if any). Then press “Next” and it will again prompt you to save the config.xml file. Save it
to the same folder (htdocs/bookstore).
You will then be back at the same dialog. Just dismiss it now by choosing “Close”.
So what’s in these files? Here is the config.xml:
<distributorInfo>
<distributor>urn:uuid:0339df67-1198-4aa0-a91b-6ca963205bba</distributor>
<ordersource>Gort's Emporium</ordersource>
<sharedSecret>YM4GWx1bY5gjMMWPUmOPqQ03D+U=</sharedSecret>
<linkURL>http://gort.corp.adobe.com:8080/fulfillment/URLLink.acsm</linkURL>
<operatorURL>http://gort.corp.adobe.com:8080/admin</operatorURL>
</distributorInfo>
Here we see that there is only one book in the store. The one item contains:
• The resource ID for the book, within the ACS4 fulfillment server.
• The number of resource items for this ID. Typically 1.
• Some metadata, including the ID of the thumbnail of the book’s cover. This might also contain some
verbiage that the site would show along with the book, etc.
• The src of the book which is the URL to the fulfillment server and the name of the book (which is based
on its resource ID). This is used to generate the proper fulfillment URL.
• The download type. Currently, only simple is supported.
• The license token. This includes the base license which includes the resource ID and the permissions.
This information is used, along with the src element to build the URLLink that is sent to the fulfillment
server to trigger the fulfillment process.
Normally there would be many of these items. From this info the store can construct the pages that display the
books that are for sale or loan and, after the user has selected a book, construct the URLLink that triggers the
fulfillment process.
Note: You typically only have to set up the config.xml file once, unless you change the URL to the fulfillment
service. But you need to update the catalog (books.xml) anytime you change any part of the catalog – books,
permissions, etc. You can do this by re-exporting the sample site from the Admin Console, selecting the Catalog
XML file (books.xml) for export.
You should see a page that contains the books that were exported to that Distributor. Click on purchase and you
will be taken to another page with more choice to further restrict the permissions on the book. This is not part of
a normal store, of course, but this is a sample test app. Click on the purchase button again and it will take you to
the “Thank you” page. This is the page normally presented by a web site after the user has presented their money
and/or accreditation. Click on “Download” and the download to Digital Editions should start.
And Finally…
And that’s it. You now have a complete, end-to-end installation of Content Server. We have cut a number of
corners and simplified parts, but all the essential pieces are there.
For more information, please consult:
• Content Server 4 User Manual
• Content Server 4 Technical Reference
• Content Server 4 FAQ