100% found this document useful (1 vote)
9 views58 pages

Oracle and Java Development 1st ed Edition Bulusu Lakshman pdf download

The document provides an overview of the book 'Oracle and Java Development' by Bulusu Lakshman, which covers various aspects of Java programming in relation to Oracle technologies. It includes sections on database access, reusable Java components, and employing Java in web environments, along with detailed programming techniques using JDBC and SQLJ. The book is published by Sams Publishing and is intended for developers looking to enhance their skills in Oracle and Java integration.

Uploaded by

nailsalvia4x
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
9 views58 pages

Oracle and Java Development 1st ed Edition Bulusu Lakshman pdf download

The document provides an overview of the book 'Oracle and Java Development' by Bulusu Lakshman, which covers various aspects of Java programming in relation to Oracle technologies. It includes sections on database access, reusable Java components, and employing Java in web environments, along with detailed programming techniques using JDBC and SQLJ. The book is published by Sams Publishing and is intended for developers looking to enhance their skills in Oracle and Java integration.

Uploaded by

nailsalvia4x
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

Oracle and Java Development 1st ed Edition

Bulusu Lakshman download

https://ebookname.com/product/oracle-and-java-development-1st-ed-
edition-bulusu-lakshman/

Get Instant Ebook Downloads – Browse at https://ebookname.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Java Programming with Oracle JDBC 1st ed Edition Donald


Bales

https://ebookname.com/product/java-programming-with-oracle-
jdbc-1st-ed-edition-donald-bales/

Linux Shell Scripting Cookbook 1st Ed 1st Edition


Sarath Lakshman

https://ebookname.com/product/linux-shell-scripting-cookbook-1st-
ed-1st-edition-sarath-lakshman/

Oracle Database Programming using Java and Web Services


1st Edition Kuassi Mensah

https://ebookname.com/product/oracle-database-programming-using-
java-and-web-services-1st-edition-kuassi-mensah/

Sweeteners and Sugar Alternatives in Food Technology


2nd Edition Kay O'Donnell

https://ebookname.com/product/sweeteners-and-sugar-alternatives-
in-food-technology-2nd-edition-kay-odonnell/
Realistic Painting Workshop 1st edition Edition Dan
Carrel

https://ebookname.com/product/realistic-painting-workshop-1st-
edition-edition-dan-carrel/

Postwar Population Transfers in Europe 1945 1955 Joseph


B. Schechtman

https://ebookname.com/product/postwar-population-transfers-in-
europe-1945-1955-joseph-b-schechtman/

Why is yawning contagious Everything you ever wanted to


know about the human body and some things you d rather
not know 1st Edition Francesca Gould

https://ebookname.com/product/why-is-yawning-contagious-
everything-you-ever-wanted-to-know-about-the-human-body-and-some-
things-you-d-rather-not-know-1st-edition-francesca-gould/

Classroom Literacy Assessment 1st Edition Jeanne R.


Paratore

https://ebookname.com/product/classroom-literacy-assessment-1st-
edition-jeanne-r-paratore/

Faith seeking understanding an introduction to


Christian theology 3. ed Edition Barth

https://ebookname.com/product/faith-seeking-understanding-an-
introduction-to-christian-theology-3-ed-edition-barth/
Six Sigma and Beyond Design for Six Sigma 1st Edition
D.H. Stamatis

https://ebookname.com/product/six-sigma-and-beyond-design-for-
six-sigma-1st-edition-d-h-stamatis/
Bulusu Lakshman

Oracle and Java


Development

A Division of Pearson Technology Group


201 West 103rd Street, Indianapolis, Indiana 46290
Oracle and Java Development Executive Editor
Rosemarie Graham
Copyright  2002 by Sams Publishing
Acquisitions Editor
All rights reserved. No part of this book shall be reproduced, stored in a Angela Kozlowski
retrieval system, or transmitted by any means, electronic, mechanical, photo-
copying, recording, or otherwise, without written permission from the pub- Development Editor
lisher. No patent liability is assumed with respect to the use of the information Kevin Howard
contained herein. Although every precaution has been taken in the preparation
of this book, the publisher and author assume no responsibility for errors or Managing Editor
omissions. Nor is any liability assumed for damages resulting from the use of Charlotte Clapp
the information contained herein.
Project Editor
International Standard Book Number: 0-672-32117-3 Carol Bowers

Library of Congress Catalog Card Number: 00-111030 Copy Editor


Michael Dietsch
Printed in the United States of America

First Printing: August 2001 Indexer


Rebecca Salerno
04 03 02 01 4 3 2 1
Proofreader
Jody Larsen
Trademarks
Technical Editor
All terms mentioned in this book that are known to be trademarks or service Joe Greene
marks have been appropriately capitalized. Sams Publishing cannot attest to
the accuracy of this information. Use of a term in this book should not be Team Coordinator
regarded as affecting the validity of any trademark or service mark. Lynne Williams

Interior Designer
Warning and Disclaimer Gary Adair

Every effort has been made to make this book as complete and as accurate as Cover Designer
possible, but no warranty or fitness is implied. The information provided is on Alan Clements
an “as is” basis. The author and the publisher shall have neither liability nor
Page Layout
responsibility to any person or entity with respect to any loss or damages aris-
Ayanna Lacey
ing from the information contained in this book.
Stacey Richwine-DeRome

ii
Contents at a Glance
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Part I Introduction
1 Introduction to Oracle Java Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Part II Database Access in Java


2 Java Stored Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Basic JDBC Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4 Advanced JDBC Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5 Basic SQLJ Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6 Advanced SQLJ Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

Part III Building Reusable Java Components


7 Using JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8 Using Enterprise JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
9 Developing and Deploying Enterprise JavaBeans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
10 Using Business Components for Java (BC4J)—Introduction and Development . . . . . 296
11 Using Business Components for Java (BC4J)—Deployment and Customization . . . 348

Part IV Employing Java in a Web Environment


12 Java Servlet Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
13 Using Java Server Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

iii
Table of Contents

Introduction..................................................................................................1

Part I Introduction

1 Introduction to Oracle Java Technologies 4


Database Access in Java .................................................................................................6
Java Stored Procedures—PL/SQL Calling Java ..................................................6
JDBC—Java Calling SQL and PL/SQL ..............................................................7
SQLJ—Java Calling SQL and PL/SQL...............................................................7
Building Reusable Java Components .............................................................................8
JavaBeans.............................................................................................................8
Enterprise JavaBeans .........................................................................................10
Business Components for Java ..........................................................................11
Employing Java in a Web Environment .......................................................................12
Java Servlets.......................................................................................................12
Java Server Pages...............................................................................................13
Summary.......................................................................................................................14

Part II Database Access in Java

2 Java Stored Procedures 16


Overview of Java Stored Procedures—PL/SQL Calling Java .....................................18
Advantages of Java Stored Procedures.........................................................................19
Comparison of PL/SQL Stored Procedures and Java Stored Procedures ....................19
Developing Java Stored Procedures—An Overview and Case Study .........................20
Case Study .........................................................................................................20
Writing the Java Method ..............................................................................................22
Loading the Java Method into the RDBMS and Resolving External
References .......................................................................................................23
Publishing the Java Method into the RDBMS ..................................................24
Calling the Java Stored Procedure from SQL or PLSQL..................................25
Loading the Java Method into the Oracle 8i Database ................................................25
Using loadjava ................................................................................................25
Resolving External References..........................................................................27
The Manner in Which Files Are Loaded ...........................................................28

iv
How Compilation Is Done? ...............................................................................29
Dropping the Java Method.................................................................................30
Creating the Java Stored Procedure and Publishing It.................................................31
Defining Call Specifications—Basics ...............................................................31
Defining Top-level Call Specs ...........................................................................34
Defining Call Specs as Part of a Package..........................................................35
Defining Call Specs as a Member Method of a SQL Object Type ...................39
Granting Access Privileges...........................................................................................43
Calling the Java Stored Procedure................................................................................43
Calling from the Top Level................................................................................43
Calling from Database Triggers.........................................................................44
Calling from SQL DML ....................................................................................48
Calling from PL/SQL ........................................................................................49
Summary.......................................................................................................................51

3 Basic JDBC Programming 52


Overview of JDBC—Java Calling SQL and PL/SQL .................................................54
About JDBC.......................................................................................................54
Oracle JDBC Drivers .........................................................................................55
JDBC 2.0 Support..............................................................................................56
Case Study .........................................................................................................58
Fundamental Steps in JDBC ........................................................................................61
Import JDBC Packages......................................................................................61
Load and Register the JDBC Driver..................................................................62
Connecting to a Database ..................................................................................62
Querying the Database.......................................................................................63
Processing the Results of a Database Query That Returns Multiple Rows ......64
Closing the ResultSet and Statement.................................................................65
Closing the Connection......................................................................................66
Processing the Results of a Database Query That Returns a Single Row ........67
Datatype Mappings ............................................................................................67
Exception Handling in JDBC ............................................................................69
INSERT, UPDATE, and DELETE Operations Using JDBC .......................................71
Prepared Statements...........................................................................................71
Callable Statements............................................................................................74
Using Transactions.............................................................................................74
Committing ........................................................................................................75

v
ORACLE AND JAVA DEVELOPMENT

Oracle JDBC Extensions ..............................................................................................77


Features of Oracle Extensions ...........................................................................78
Oracle JDBC Packages and Classes ..................................................................79
Oracle Type Extensions .....................................................................................79
Calling Stored Procedures in JDBC Programs ............................................................84
Calling PL/SQL Stored Procedures...................................................................85
Calling Java Stored Procedures .........................................................................88
Handling Resultsets in JDBC ......................................................................................89
Returning Resultsets ..........................................................................................89
Scrollable Resultsets ..........................................................................................91
Updateable Resultsets ........................................................................................94
Metadata.............................................................................................................97
Summary.......................................................................................................................99

4 Advanced JDBC Programming 100


Overview.....................................................................................................................102
Case Study .......................................................................................................102
Handling Object Types in JDBC ................................................................................104
Using JDBC STRUCT Type Handle Oracle Object Types .............................104
Using Custom Object Classes to Handle Oracle Object Types.......................108
Handling Object REFS in JDBC................................................................................114
Using JDBC REF Type to Handle Object REFS ............................................115
Handling Collections in JDBC...................................................................................120
Using JDBC ARRAY Type to Handle Collections .........................................120
Handling Large Objects in JDBC...............................................................................127
Using BLOBS ..................................................................................................128
Using CLOBS ..................................................................................................132
Using BFILES..................................................................................................137
JDBC Performance Extensions ..................................................................................141
Disabling Auto-Commit Mode ........................................................................141
Oracle Row Prefetching...................................................................................141
Update Batching ..............................................................................................142
Using Prepared Statements and Bind Variables ..............................................145
JDBC in the Server.....................................................................................................145
Summary.....................................................................................................................146

5 Basic SQLJ Programming 148


Overview of SQLJ—Java Calling SQL and PL/SQL ................................................150
About SQLJ .....................................................................................................150
Advantages of Using SQLJ .............................................................................152

vi
CONTENTS

Comparison of SQLJ and JDBC......................................................................153


Comparison of Java and PL/SQL ....................................................................153
SQLJ Declarations ...........................................................................................154
SQLJ Expressions ............................................................................................154
Case Study .......................................................................................................156
Connecting to a Database...........................................................................................158
Establishing a Connection ...............................................................................158
Setting the Default Connection Context..........................................................159
SQLJ Query Processing..............................................................................................160
Writing a Query in SQLJ.................................................................................160
Executing a Query ...........................................................................................161
Processing the Results—Single-Row Query ...................................................161
Processing the Results—Multi-Row Query.....................................................165
Exception Handling in SQLJ......................................................................................170
INSERT, UPDATE, DELETE, and COMMIT Operations in SQLJ..........................175
INSERT, UPDATE, DELETE Operations .......................................................175
Transaction Control .........................................................................................176
Handling Types and Large Objects in SQLJ..............................................................179
Handling Types ................................................................................................179
Oracle.sql Package...........................................................................................182
Oracle SQLJ Type Extensions .........................................................................182
Summary.....................................................................................................................187

6 Advanced SQLJ Programming 188


Overview.....................................................................................................................190
Case Study .......................................................................................................190
Handling Large Objects..............................................................................................192
Using BLOBS ..................................................................................................192
Using BFILES..................................................................................................195
Handling Objects and Collections in SQLJ ...............................................................197
Handling Objects .............................................................................................198
Handling Collections .......................................................................................204
SQLJ Performance Extensions...................................................................................210
Disabling Auto-Commit Mode ........................................................................210
Oracle Row Prefetching...................................................................................210
Update Batching ..............................................................................................211
Oracle Optimizer..............................................................................................212
SQLJ in the Server .....................................................................................................213
Summary.....................................................................................................................213

vii
ORACLE AND JAVA DEVELOPMENT

Part III Building Reusable Java Components

7 Using JavaBeans 214


Overview of JavaBeans ..............................................................................................216
JavaBean Naming Conventions ..................................................................................218
Adding Properties to the JavaBean ............................................................................218
Adding Events to the JavaBean..................................................................................220
Steps to Create a JavaBean.........................................................................................221
Writing the JavaBean Class .............................................................................222
Set Properties for JavaBeans............................................................................222
Define Methods................................................................................................222
Register Events ................................................................................................236
The BeanInfo Class ..................................................................................................236
Generating the BeanInfo Class......................................................................238
Summary.....................................................................................................................240

8 Using Enterprise JavaBeans 242


Overview of EJBs.......................................................................................................244
Types of EJBs .............................................................................................................245
Entity Beans.....................................................................................................245
Session Beans ..................................................................................................245
EJB Architecture and Concepts..................................................................................246
EJB Architecture ..............................................................................................247
Differences Between EJBs and JavaBeans......................................................257
Advantages of EJBs .........................................................................................258
Summary.....................................................................................................................259

9 Developing and Deploying Enterprise JavaBeans 260


Overview.....................................................................................................................262
Developing EJBs ........................................................................................................262
Implementing an EJB .................................................................................................262
The Remote Interface ......................................................................................263
The Home Interface .........................................................................................263
The Actual Bean Class.....................................................................................264
The Deployment Descriptor ............................................................................266
Deploying the EJB Class to the EJB Server....................................................269
The Client Application—A Java Applet or a JNDI Application .....................271
Parameter Passing.......................................................................................................274
Using JDBC and SQLJ in an EJB Component ..........................................................274

viii
CONTENTS

Handling Transactions ................................................................................................285


Bean-Managed Demarcation on the Server Side.............................................289
Client-side Demarcation ..................................................................................290
EJB Tools....................................................................................................................291
deployejb..........................................................................................................291
ejbdescriptor.....................................................................................................294
Summary.....................................................................................................................295

10 Using Business Components for Java (BC4J)—Introduction


and Development 296
Overview of BC4J ......................................................................................................298
About BC4J......................................................................................................298
Advantages of BC4J ........................................................................................298
Differences Between BC4J and EJB ...............................................................299
Creating a BC4J Application—An Overview .................................................299
BC4J Components ...........................................................................................300
BC4J and XML ..........................................................................................................303
About XML and Advantages of Using XML ..................................................303
How XML Fits into BC4J?..............................................................................304
XML Syntax and Document Type Definition .................................................304
XSL and DOM.................................................................................................306
Parsing XML....................................................................................................307
Developing a BC4J Application .................................................................................308
Creating the Database Schema ........................................................................308
Creating the BC4J Components ......................................................................308
Running the Application Using Business Component Browser......................331
Creating Entity Objects ..............................................................................................332
Defining Entity Objects ...................................................................................332
Creating a New Entity Object..........................................................................332
Using Entity Object Wizard to Modify an Existing Entity Object .................333
Adding Business Rules to an Entity Object ....................................................334
Associations and Compositions.......................................................................334
Validation of Business Data.............................................................................336
Creating View Objects................................................................................................339
Defining View Objects.....................................................................................340
Creating a New View Object ...........................................................................340
Using View Object Wizard to Modify an Existing View Object.....................341
Calculated Attributes........................................................................................342
View Links .......................................................................................................343

ix
ORACLE AND JAVA DEVELOPMENT

Creating Application Modules....................................................................................344


Defining Application Modules.........................................................................344
Defining a Data Model for an Application Module ........................................345
Nesting Application Modules ..........................................................................346
Adding Custom Code to an Application Module ............................................346
Adding Custom Properties to an Application Module ....................................347
Summary.....................................................................................................................347

11 Using Business Components for Java (BC4J)—Deployment


and Customization 348
Deploying BC4J .........................................................................................................350
Deployment Options ........................................................................................350
Steps in Deploying an Application Module ....................................................351
Deploying an Application Module Using a Deployment Profile ....................354
Deleting a Deployed Application Module .......................................................357
Testing a Deployed Application.......................................................................358
Developing a Client for BC4J Application ................................................................359
Developing an HTML Client Using JSP .........................................................360
Developing a Java GUI Client Using Data-Aware Controls ...........................364
Hand-coding a Java Client...............................................................................366
Coding a Client for Tier Independence ...........................................................367
Handling of Events and Errors ...................................................................................368
About Events and Publishing of Events ..........................................................368
Subscribing to Events ......................................................................................369
Error Handling .................................................................................................369
Exception Classes in JDeveloper.....................................................................370
Handling Exceptions........................................................................................370
Miscellaneous Topics .................................................................................................371
Creating a Database Table from an Entity Object...........................................371
Creating a Database Constraint from an Entity Constraint .............................372
Expert Mode View Objects..............................................................................374
Transaction Control in BC4J ...........................................................................375
Summary.....................................................................................................................375

Part IV Employing Java in a Web Environment

12 Java Servlet Programming 376


Overview of Servlets ..................................................................................................378
Servlets Basics............................................................................................................379

x
CONTENTS

Servlet Life Cycle ............................................................................................379


MIME Types ....................................................................................................382
Advantages of Java Servlets ............................................................................382
Developing a Servlet ..................................................................................................383
Creating a Servlet ............................................................................................384
Accessing a Servlet..........................................................................................393
Exception Handling ....................................................................................................394
Managing Sessions in Servlets...................................................................................396
Database Sessions ............................................................................................396
HTTP Servlet Sessions ....................................................................................397
Managing Sessions ..........................................................................................398
Servlets Deployment ..................................................................................................398
Deploying a Servlet to a JAR File ...................................................................398
Packaging JAR Files ........................................................................................399
Deploying Java Servlets on the Database-tier in Oracle8i (Oracle 8.1.7).......399
Create a Service..........................................................................................................400
Add an Endpoint for a Port and Register It to the Web Service .....................401
Grant Ownership to the Servlet User for the Service Created ........................401
Create a Web Domain ......................................................................................401
Create a Servlet Context ..................................................................................402
Compile and Load the Servlet Class into the Database ..................................403
Publish the Servlet in the Oracle8i Web Server ..............................................403
Access the Servlet from a Web Browser .........................................................404
Summary.....................................................................................................................405

13 Using Java Server Pages 406


Overview of JSP .........................................................................................................408
JSP Basics...................................................................................................................409
JSP Tags ...........................................................................................................409
Declarations, Scripting, and Expressions ........................................................410
Objects and Actions .........................................................................................412
Advantages of JSPs..........................................................................................416
Differences Between JSPs and Java Servlets ..................................................416
JSP Architecture .........................................................................................................416
Creating and Designing a JSP ....................................................................................417
Create JSPs ......................................................................................................417
Referencing a JavaBeans Component from a JSP...........................................419
Creating, Initializing, and Using JSP for Calling JavaBeans.....................................420
Deploying a JSP .........................................................................................................426

xi
Compile Any Dependent Classes ....................................................................427
Translate the JSP on the Server Side or Pre-translate the JSP Pages
on the Client Side..........................................................................................427
Load the Translated JSP Pages into the Oracle8i Database ............................428
Optionally “Hotload” the Generated Page Implementation Classes ...............428
“Publish” the JSP Pages ..................................................................................428
Access the JSP Using a URL ..........................................................................430
Summary.....................................................................................................................431

Index 432

xii
About the Author
Bulusu Lakshman is the author of the book Oracle Developer
Forms Techniques from Sams Publishing. He holds an Oracle
Masters credential from Oracle Corporation and is OCP-Certified.
He also holds Master level BrainBench certifications. He has more
than nine years of experience in using Oracle and its associated
tools in the development of mission-critical applications. Most
recently, he has used Oracle 8i and its related technologies for
developing applications for a Fortune 400 client. He has lectured at
different national and international conferences and authored tech-
nical articles for lead publications in the United States and United
Kingdom. Currently he works for Compunnel Software Group Inc.,
a leading technical consulting firm in New Jersey and can be
reached at [email protected] or
[email protected]. He lives in Edison, New Jersey, with
his wife Anuradha and writes poetry during his free time.

xiii
Dedication
This book is dedicated to the memory of my brother
Bulusu Harihar Mallikarjuna, whose loving words still ring in my ears.

Acknowledgments
I thank my lovely and sweet wife Anuradha and my brother B.K. Visweswar for providing
help in preparing part of the manuscript.
I thank my parents, Prof. B. S. K. R. Somayajulu and Smt. B.Sita for their constant encour-
agement throughout.
I thank Mr. Paul Wu, Director, MIS, Associated Press, the client company for which I am
consulting, for providing me with necessary resources to write this book.
I thank the publisher and various editors at Sams Publishing, for the opportunity to publish
my book.
My sincere gratitude goes to all concerned for their help and advice.

xiv
Tell Us What You Think!
As the reader of this book, you are our most important critic and commentator. We value your
opinion and want to know what we’re doing right, what we could do better, what areas you’d
like to see us publish in, and any other words of wisdom you’re willing to pass our way.
As an executive editor for Sams Publishing, I welcome your comments. You can e-mail
or write me directly to let me know what you did or didn’t like about this book—as well as
what we can do to make our books stronger.
Please note that I cannot help you with technical problems related to the topic of this book,
and that due to the high volume of mail I receive, I might not be able to reply to every
message.
When you write, please be sure to include this book’s title and author as well as your name
and phone or fax number. I will carefully review your comments and share them with the
author and editors who worked on the book.

E-mail: [email protected]
Mail:

Sams Publishing
800 East 96th Street
Indianapolis, IN 46240 USA

xv
Introduction

Oracle has emerged as the world’s first Internet database with the introduction of Java in the
database. The latest release Oracle 9i and its previous release, Oracle 8i, have made significant
advancements in the areas of Java, e-commerce, and business-to-business (B2B) and business-
to-consumer (B2C). The combination of Oracle 8i and Java provides a robust and effective
environment for development and deployment of applications. Oracle 8i incorporates a Java
Web server in the RDBMS (Relational Database Management System) that enables a wide
variety of database functions using Java. Basically, these fall under three main categories:
• Database access from Java
• Building reusable components
• Deploying Java in a Web environment

This book covers the Oracle Java technologies involved in these three areas. If you’re develop-
ing applications incorporating these Java technologies or you’re migrating from older technolo-
gies, you can benefit from this book. This book is divided into four parts with thirteen chapters
as follows:

Introduction
This includes Chapter 1, “Introduction to Oracle Java Technologies,” describing the particular
Java technologies that are relevant from an Oracle perspective, categorized in three ways
described earlier. A brief description of each technology is presented.

Database Access in Java


This part comprises five chapters highlighting three different technologies for accessing an
Oracle 8i database using Java.
Chapter 2 covers Java Stored Procedures. Chapters 3, “Basic JDBC Programming,” and 4,
“Advanced JDBC Programming,” cover the basics and advanced aspects of Java Database
Connectivity (JDBC). Chapters 5, “Basic SQLJ Programming,” and 6, “Advanced SQLJ
Programming,” cover the ins and outs of yet another technology for database access from Java,
namely, SQLJ.
ORACLE AND JAVA DEVELOPMENT

Building Reusable Components


This part comprises five chapters that discuss the technologies for component-based develop-
ment such as JavaBeans, Enterprise JavaBeans, and Business Components for Java.
Chapter 7, “Using JavaBeans,” covers JavaBeans and how to use them with Oracle. Chapters 8,
“Using Enterprise JavaBeans,” and 9, “Developing and Deploying Enterprise JavaBeans,”
cover the advanced technology of Enterprise Java Beans (EJBs) and provide a detailed account
of development and deployment of EJBs using Oracle 8i. Chapters 10, “Using Business
Components for Java (BC4J)—Introduction and Development,” and 11, “Using Business
Components for Java (BC4J)—Deployment and Customization,” highlight the Oracle-specific
technology called Business Components for Java (BC4J) and present the details of the
specifics involved therein.

Deploying Java in a Web Environment


This part comprises two chapters that describe the technologies of employing Java in a Web
environment to produce dynamic Web content with Java. Specifically, Java servlets and Java
Server Pages (JSPs) are discussed. Chapter 12, “Java Servlet Programming,” discusses Java
servlets and their relation to Oracle. Chapter 13, “Using Java Server Pages,” outlines the devel-
opment and deployment of JSPs in Oracle 8i.

2
INTRODUCTION TO
ORACLE JAVA
TECHNOLOGIES
ESSENTIALS
• Java technologies can be incorporated into the Oracle8i database
in three ways, namely, database access in Java, building reusable
Java components, and employing Java in a Web environment.
• Database access in Java is by using Java Stored Procedures, Java
Database Connectivity, and SQLJ.
• Building reusable Java components is by using JavaBeans,
Enterprise JavaBeans, and Business Components for Java (BC4J).
• Employing Java in a web environment is by using Java Servlets and
Java Server Pages.
• Oracle8i provides a seamless environment where Java and PL/SQL
can interoperate as two major database languages. Java Stored
Procedures can reside in Oracle8i and JDBC and SQLJ applications
can access the database. In addition, Enterprise JavaBeans, CORBA
objects, BC4J objects, Java Servlets, and Java Server pages can be
deployed in the Oracle8i database.
I: INTRODUCTION

Java technologies, based on the multi-tier component-based model, currently dominate the
scene of Internet application development. Java, JavaBeans, Java Servlets, and Enterprise
JavaBeans (EJB) Technologies constitute the most fundamental architectural change in soft-
ware development in the coming years. Oracle8i has positioned itself as a tool for developing
Web-commerce megasites using the popular paradigm of component-based multi-tier applica-
tions. It makes use of Java technologies to achieve this.
This chapter explains the Oracle Java technologies available and gives a brief description of
each. It offers an outline of how Java technologies can be incorporated into the Oracle8i data-
base in three ways: database access in Java, building reusable Java components, and employing
Java in a Web environment. Database access in Java is done by using Java Stored Procedures,
Java Database Connectivity, and SQLJ. Building reusable Java components is achieved by
using JavaBeans, Enterprise JavaBeans, and Business Components for Java. Employing Java in
a Web environment is done by using Java Servlets and Java Server Pages.
Oracle8i database server has an Oracle JServer that includes a Java Virtual Machine (JVM)
called Aurora, a Java runtime environment, and supporting Java class libraries. The Oracle
JServer is a server-side Java engine for the Oracle8i database. A JVM is a Java Virtual Machine
that takes care of compiling and executing Java code. The Oracle JServer along with the con-
tained JVM is embedded in the Oracle8i RDBMS and is integrated with SQL and PL/SQL. It
enables interoperability of Java and PL/SQL inside the database. Oracle8i also has the capabil-
ity of handling CORBA components and EJB support. In addition, Java Server Pages (JSP) and
Java Servlets can be deployed in the Oracle8i database. Both Java and PL/SQL (Procedural
Language/Structured Query Language) can interoperate as two database languages. Java applets
and applications can access Oracle8i using Java Database Connectivity (JDBC) or SQLJ. These
Oracle Java technologies are discussed in-depth in the remaining chapters of this book.

Database Access in Java

Java Stored Procedures—PL/SQL Calling Java


Java Stored Procedures are the Java counterpart for PL/SQL stored procedures in the tradi-
tional Oracle8i database. Oracle8i provides a seamless environment where Java and PL/SQL
can interoperate as two major database languages. Java Stored Procedures are an example of
PL/SQL calling Java. Procedures written in Java are loaded into the database. Once loaded, the
Java Stored Procedures are published in the Oracle Data Dictionary. These published stored
procedures can be invoked from PL/SQL code, database triggers, and top-level code. Oracle8i
allows access control on the Java stored procedures.
Chapter 2, “Java Stored Procedures,” describes the steps for developing, loading, and invoking
Java Stored Procedures. The chapter demonstrates the loadjava utility for loading a Java
Stored Procedure into the database.

6
1: INTRODUCTION TO ORACLE JAVA TECHNOLOGIES

The mapping between Java and PL/SQL data types is also described. Examples illustrate how
a Java Stored Procedure can be invoked from PL/SQL blocks, database triggers, and top-level
code and object type methods.

JDBC—Java Calling SQL and PL/SQL


Java Database Connectivity (JDBC) is the Java Application Programming Interface (API) for
communicating with databases. It is a Java API for providing vendor-transparent access to data-
bases through a standard interface. From an Oracle8i perspective it provides a way for Java
applications to call SQL and PL/SQL. Oracle8i supports the standard JDBC 1.0 and 2.0 fea-
tures. In addition, Oracle8i has Oracle-specific extensions to support advanced Oracle8i data
types and other performance related functionality. The JDBC API consists of a high-level API
and low-level drivers for connecting to different databases. Java applications can access an
Oracle8i database by establishing a connection to a particular schema using one of the Oracle
JDBC drivers. The driver is registered first and then a connection is obtained. Once a connection
is obtained, SQL statements or blocks of PL/SQL code can be executed against the target data-
base using standard JDBC API and the results of the SQL operations can be processed in the
Java application. Data can be passed to and from an Oracle8i database and Java application.
Chapter 3, “Basic JDBC Programming,” describes in detail the Oracle-related aspects of JDBC
programming. It starts by highlighting the basic steps involved in accessing an Oracle8i database
and then goes on to discuss issues such as performing Data Manipulation Language (DML) using
JDBC and Exception handling. The Oracle JDBC extensions are discussed in detail. The method
of calling stored procedures from JDBC programs and result set functionality is explained.
Chapter 4, “Advanced JDBC Programming,” discusses the support for Oracle objects in JDBC.
Finally, it also describes the performance extensions in JDBC.

SQLJ—Java Calling SQL and PL/SQL


SQLJ is an emerging standard that lets the use of embedded Structured Query Language (SQL)
database requests and statements into Java. It provides a set of programming extensions to Java
that enable database access from Java applications. Using JDBC is the other way of doing this.
The difference lies in that SQLJ is static embedded SQL for Java whereas JDBC provides a
dynamic runtime SQL interface for Java. A source program is written in Java with static
embedded SQL statements. A SQLJ translator is run on this source program that converts the
SQLJ program to a standard Java program, replacing the embedded SQL statements with calls
to SQLJ runtime. The generated Java program is compiled using any Java compiler to obtain
Java executable/Java bytecode and then run against a database.
The second component of SQLJ is the SQLJ runtime environment. It consists of a SQLJ run-
time library that is implemented in pure Java. This library uses JDBC and hence retains the
features of vendor independence and portability. However, the Oracle-SQLJ runtime library is
a thin layer of pure Java code that runs above the JDBC driver.

7
I: INTRODUCTION

Advantages of Using SQLJ


• SQL statements are checked at compilation time rather than at run time. Also, optimiza-
tion of the SQL statements is done at compilation time. This provides a significant speed
improvement.
• SQLJ provides strong type-checking of queries and other return parameters. Strong type-
checking ensures that data types of all variables and parameters involved are strictly
compatible.
• SQLJ provides more efficient runtime execution using SQL precompilation techniques.
• SQLJ is higher level than JDBC. In SQLJ programs, SQL statements are not hidden in
method calls.
• SQLJ programs offer flexible deployment configurations. Once developed, they can be
deployed in any configuration such as on a thick client, on a thin client, in an application
server, in a Java application, in an applet, or in an Oracle8i database server as an SQLJ
Stored Procedure.
• SQLJ conforms with ANSI standards, is vendor neutral, and is portable.

Chapter 5, “Basic SQLJ Programming,” explains the use of SQLJ for database access in Java.
It starts by discussing the fundamentals of SQLJ and then proceeds to outline SQLJ query pro-
cessing, DML processing, and exception handling. Chapter 6, “Advanced SQLJ
Programming,” presents advanced topics such as handling object types, large objects, and col-
lections in SQLJ and SQLJ performance extensions. The chapter closes with a brief discussion
of SQLJ in the server.

Building Reusable Java Components

JavaBeans
JavaBeans are Java classes designed to serve as reusable components. Beans are the basic com-
ponent model in Java applications. Individual component Beans can be easily integrated to
form complex applications. A Bean Development Kit (BDK) can be used to make the develop-
ment and deployment of a Bean easier.
A Java class can be converted to a Bean by changing it to adhere to the JavaBeans specifica-
tion. A good example of a JavaBean is one that performs a validation based on certain input.
In an application, it is a good idea to design most of the GUI-related components as Beans
even though some Beans need not be related to the GUI. This is because the GUI-related com-
ponents, once developed as a Bean, can be reused in multiple Java applications and are easily
“pluggable” in existing pieces of code and become part of the application.

8
Exploring the Variety of Random
Documents with Different Content
was compelled to make concessions to the commercial
spirit.

In support of the eastern province [that is, the crusading


states], in addition to the forgiveness of sins which we
promise those who, at their own expense, set out thither, and
besides the papal protection which we give those who aid
that land, we have renewed that decree of the Lateran
council [held under Alexander III, 1179], which
excommunicated those Christians who shall furnish the
Saracens with weapons, iron, or timbers for their galleys, and
those who serve the Saracens as helmsmen or in any other
way on their galleys and other piratical craft, and which
furthermore ordered that their property be confiscated by the
secular princes and the consuls of the cities, and that, if any
such persons should be taken prisoner, they should be the
slaves of those who captured them. We furthermore
excommunicated all those Christians who shall hereafter have
anything to do with the Saracens either directly or indirectly,
or shall attempt to give them aid in any way so long as the
war between them and us shall last. But recently our beloved
sons, Andreas Donatus and Benedict Grilion, your
messengers, came and explained to us that your city was
suffering great loss by this our decree, because Venice does
not engage in agriculture, but in shipping and commerce.
Nevertheless, we are led by the paternal love which we have
for you to forbid you to aid the Saracens by selling them,
giving them, or exchanging with them, iron, flax (oakum),
pitch, sharp instruments, rope, weapons, galleys, ships, and
timbers, whether hewn or in the rough. But for the present
and until we order to the contrary, we permit those who are
going to Egypt to carry other kinds of merchandise whenever
it shall be necessary. In return for this favor you should be
willing to go to the aid of the province of Jerusalem and you
should not attempt to evade our apostolic command. For
there is no doubt that he who, against his own conscience,
shall fraudulently try to evade this prohibition, shall be under
divine condemnation.

287. Papal Protection of Crusaders. Innocent III


Takes the King of the Danes under his
Protection, 1210.
Migne, 216, col. 258.

We commend you because, fired with zeal for the orthodox


faith and for the praise of God and for the honor of the
Christian religion, you have taken the cross and have drawn
your royal sword to repress the cruelty of an infidel people
[the Turks]. And we also give you our apostolic favor, and
take under the protection of St. Peter as well as under our
own your person and your kingdom with all your possessions,
decreeing that so long as you are engaged in this work all
your possessions shall remain intact and free from all
molestation. Nevertheless we urge upon you to take all
possible precautions to protect you and yours, in order that
you may not suffer any loss.{122}
{122} From this sentence it may be inferred that the
papal protection was not always respected. It
sometimes failed to protect the possessions of a
crusader from violence and seizure.

288. Innocent III and the Lateran Council


Announce a Crusade, 1215.
Bullarium Romanum (Rome, 1740), Vol. III, para. i, pp. 173 ff.

It was the greatest ambition of Innocent III to recover


Palestine from the Mohammedans. During his
pontificate he never lost sight of this object. One of the
chief purposes of the Lateran council which he called
together in 1215, was to arrange for a universal
crusade. This decree shows his earnestness in the
matter, but at the same time betrays the difficulties
which were in the way. (1) The character of the clergy
was not such as to insure the best results, and their
conduct was not above reproach. They were jealous of
each other, and intrigued to secure places to which
much honor and rich livings were attached (par. 2). (2)
Many who took the cross afterwards refused to go.
Some had no doubt made the vow in a moment of
enthusiasm; others, in a calculating spirit, hoping to
gain some reputation, or secure some advantage, such
as an extension of time in the payment of their debts,
the cancellation of interest, the freedom from local
taxation, or feudal dues, the right to raise money by
pawning their fiefs, etc. (pars. 4, 10, and 11). (3) There
was a general unwillingness on the part of the rich to
go in person on a crusade. Nor were they all willing to
equip someone to go in their place (pars. 5 and 6). (4)
The commercial interests and spirit of the Italian cities
were stronger than their religious sentiment, and led
them to sell arms and ships to the Mohammedans, and
even to serve in important positions on their boats
(pars. 12, 13, and 14). (5) The warlike spirit of the
west had found a new outlet in the bloody tournaments
which were now much in fashion, and the feuds and
private warfare offered the ambitious and adventurous
knight a convenient field for the constant exercise of
arms (pars. 15 and 16).

In spite of his great efforts, many things made the


execution of Innocent’s plan impossible. The popular
days of the crusades were over. Innocent escaped a
bitter disappointment only by his death, which occurred
the following year, 1216.

Since we earnestly desire to liberate the holy land from the


hands of the wicked, we have consulted wise men who fully
understand the present situation. And at the advice of the
holy council we decree that all crusaders who shall determine
to go by sea shall assemble in the kingdom of Sicily a year
from the first of next June. They may gather at their
convenience either at Brindisi, Messina, or in any other place
on either side of the strait. If the Lord permits, we shall also
be there in order that the Christian army may, with our advice
and aid, be well organized, and set out with the divine
benediction and papal blessing.

1. Those who determine to go by land shall be ready at the


same date, and they shall keep us informed of their plans
in order that we may send them a suitable legate to
counsel and aid them.
2. All clergymen of whatever rank, who go on the crusade,
shall diligently devote themselves to prayer and
exhortation, by word and example teaching the crusaders
always to have the fear and the love of God before their
eyes and not to say or do anything to offend the divine
majesty. Even if they sometimes fall into sin, they shall
rise again by true penitence. They shall show humility of
heart and of body, and observe moderation in their way
of living and in their dress. They shall altogether avoid
dissensions and rivalries, and shun hatred and envy.
Thus, equipped with spiritual and material arms, they
shall fight more securely against the enemies of the faith,
not resting on their own power but hoping in the divine
strength.
3. These clergymen shall receive all the income of their
benefices for three years, just as if they were residing in
them, and, if it is necessary, they may pawn their
benefices for the same length of time.
4. In order that this holy undertaking may not be prevented
or delayed, we earnestly command all prelates, each in
his own locality, to urge and insist that all who have
taken the cross fulfil their vows to the Lord. And, if
necessary, they may compel them to do so, in spite of all
their subterfuges, by putting their persons under
excommunication and their lands under the interdict. We
except, however, those who may find some real
hindrance in the way, on account of which we may
decide that their vow may be commuted or put off.
5. In addition to these things, that nothing relating to
Christ’s business may be neglected, we command
patriarchs, archbishops, bishops, abbots, and all others
who have the care of souls, zealously to preach the
crusade to those who are under their charge, by the
Father, Son, and Holy Spirit, one only true eternal God,
beseeching kings, dukes, princes, marquises, counts,
barons, and other magnates, as well as the communes of
cities, villages, and towns, that those who do not go in
person to aid the holy land may, in proportion to their
wealth, furnish a suitable number of fighting men and
provide for their necessary expenses for three years. This
they shall do for the remission of their sins according to
the terms published in our general letter, and, for the
sake of greater clearness, repeated below. Not only those
who give their own ships, but also those who shall try to
build ships for this purpose, shall have a share in this
remission of sins.
6. If any shall be found so ungrateful to the Lord as to
refuse, we warn them that they must answer for it to us
before the terrible judge on the last day. Let all such
consider with what conscience and what security they
will be able to make their confession before the only
begotten Son of God, Jesus Christ, into whose hands the
Father has given all things, if, in this matter which so
peculiarly concerns them, they refuse to obey him who
was crucified for sinners, by whose favor and goodness
they live and are sustained, nay, more, by whose blood
they are redeemed.
7. Lest we should seem to put on other men’s shoulders
burdens so heavy that we would not so much as put a
finger to them, like those who say, but do not, we give
30,000 pounds out of our savings for this work, and
besides the passage-money which we give all crusaders
from Rome and the surrounding country, we also give
3,000 silver marks which are left in our hands from the
gifts of certain Christians, the rest having been spent for
the benefit of the holy land by the patriarchs of
Jerusalem and the masters of the Templars and the
Hospitallers.
8. Since we wish all other prelates and clergy to have a
share in this meritorious work and its reward, we, with
the approval of the council, decree that all the clergy of
whatever rank shall, for three years, give the twentieth of
the income of their churches to the aid of the holy land,
and for the collection of it we shall appoint certain
persons. We except from this tax certain monks and also
those who shall take the cross and go in person on the
crusade.
9. Moreover, we and our brethren, the cardinals of the holy
Roman church, will pay a tenth of our incomes; and let
all know that they must faithfully do this. For any cardinal
who shall knowingly commit any fraud in this matter shall
incur the sentence of excommunication.
10. Now, because it is only just that those who devote
themselves to the service of the heavenly ruler should
enjoy some special prerogative, and since it is a little
more than a year until the time set for going, we decree
that all who have taken the cross shall be free from all
collections, taxes, and other burdens. As soon as they
take the cross we receive them and their possessions
under the protection of St. Peter and of ourselves, so
that archbishops, bishops, and other prelates are
entrusted with their defence, and besides, other
protectors shall be specially appointed to defend them.
And until they return or their death shall be certainly
known, their possessions shall not be molested. And if
anyone shall act contrary to this he shall be restrained by
ecclesiastical censure.
11. If any of those who go on the crusade are bound by oath
to pay interest, their creditors, under threat of
ecclesiastical censure, shall be compelled to free them
from their oath and from the payment of the interest. If
anyone compels them to pay the interest, he shall be
forced to pay it back to them. We order the secular
authorities to compel the Jews to remit the interest to all
crusaders, and until they do remit it they shall have no
intercourse with Christians. If any are not able for the
present to pay their debts to Jews, the secular authorities
shall secure an extension of time for them, so that after
they have set out on the journey until their return or
their death is certainly known, they shall not be disturbed
about the interest. The Jews shall be compelled, after
deducting the necessary expenses, to apply the income
which they receive in the meantime from the property
which they hold in pawn, toward the payment of the
debt; since a favor of this kind, which defers the
payment but does not cancel the debt, does not seem to
cause much loss. Moreover, all prelates must know that
they will be severely punished if they are lax in securing
justice for crusaders or their families.
12. Since corsairs and pirates greatly impede the work by
taking and robbing those who are going to, or returning
from, the holy land, we excommunicate all who aid and
protect them. Under the threat of anathema we forbid
anyone knowingly to have anything to do with them in
buying or selling, and we command all rulers of cities and
other places to prevent them from practising this iniquity.
Otherwise, since not to interfere with the wicked is the
same as to aid them, and since he who does not prevent
a manifest crime is suspected of having a secret share in
it, we command all prelates to exercise ecclesiastical
severity against their persons and lands.
13. Besides, we excommunicate and anathematize those
false and impious Christians who, against Christ and the
Christian people, furnish the Saracens with arms, irons,
and timbers for their galleys. If any who sell galleys or
ships to the Saracens, or accept positions on their
piratical craft, or give them aid, counsel, or support with
regard to their [war] machines to the disadvantages of
the holy land, we decree that they shall be punished with
the loss of all their goods, and they shall be the slaves of
those who capture them. We command that this decree
be published anew every Sunday and Christian feast day
in all the maritime cities, and the bosom of the church
shall not be opened to offenders against it unless, for the
support of the holy land, they give all that they have
gained from such a damnable business, and as much
more from their possessions, so that they shall be justly
punished for their crimes. But if they cannot pay, they
shall be punished in some other way, in order that by
their punishment others may be prevented from
impudently attempting things of the same sort.
14. We forbid all Christians for the next four years to send
their ships, or permit them to be sent, to lands inhabited
by Saracens, in order that a larger supply of vessels may
be on hand for those who wish to go to the aid of the
holy land, and also that the Saracens may be deprived of
that aid which they have been accustomed to get from
this.
15. Although tournaments have been prohibited by many
councils under the general threat of punishment, we
forbid them for three years under the threat of
excommunication, because the crusade is hindered by
them.
16. Since, for the accomplishment of this work, it is
necessary that Christian princes and peoples live in
peace, and in order that the clergy may be able to make
peace between all who are quarreling, or persuade them
to make an inviolable truce, with the approval of the holy
universal council we decree that a general peace shall be
observed in the whole world for at least four years. And
those who shall refuse to observe this peace shall be
compelled to do so by excommunication of their persons
and interdict on their lands, unless they have been so
malicious in inflicting injuries on others that they
themselves do not deserve the protection of such a
peace. If they disregard the censure of the church, the
ecclesiastical authorities shall invoke the secular power
against them as disturbers of the business of Christ.
17. Trusting, therefore, in the mercy of omnipotent God and
the authority of Saints Peter and Paul, and by the
authority to bind and loose, which God has given us, to
all who shall personally and at their own expense go on
this crusade we grant full pardon of their sins, which they
shall repent and confess, and, besides, when the just
shall receive their reward we promise them eternal
salvation. And to those who shall not go in person, but
nevertheless at their own expense and in proportion to
their wealth and rank shall send suitable men, and
likewise to those who go in person but at the expense of
others, we grant the full pardon of their sins. All who
shall give a fitting part of their wealth to the aid of the
holy land shall, in proportion to their gifts and according
to the degree of their devotion, have a share in this
forgiveness. This universal council wishes to aid in the
salvation of all who piously set out on this work, and
therefore grants them in common the benefit of all its
merits. Amen.

Given at the Lateran, 19 kal. Jan., year 18 of our pontificate.


X. SOCIAL CLASSES AND
CITIES IN GERMANY

289. Otto III Forbids the Unfree Classes to


Attempt to Free Themselves, ca. 1000.
Altmann und Bernheim, no. 61.

In the tenth century a large part of the peasant


population of Germany was unfree. But from this
decree of Otto III it is apparent that they were trying to
escape from this condition. From various causes they
had been able to avoid rendering their servile dues, and
had, on that account, asserted their freedom.

While the number of unfree was great, they were not all
equally unfree. The lowest grade were slaves in the real
sense of the word; that is, they were chattels. But this class
was not numerous and was tending to disappear. The highest
grade was composed of those who were personally free, and
who could amass property; but they were unfree in that they
had no legal status. That is, they could not appear in court as
a party to a suit, nor could they testify as witnesses. In all
legal matters they had to have some one to represent them in
the court. These are the two extremes, between which there
were a great many unfree classes or groups, each differing
from the other in the degree of personal or property rights
which they possessed. An idea of some of these classes will
be gained from the following documents.

There is need of careful legislation because the princes of the


empire, both lay and clerical, rich and poor, the higher as well
as the lower, make frequent complaints that they are not able
to obtain from their unfree subjects those services to which
they have a right. For some falsely declare that they are free
because their lords, in many cases, cannot prove the
servitude which they [their unfree subjects] are trying in a
dishonest way to escape. Others are trying to rise to the
honor of freedom because their lords have, for a long time,
been hindered from knowing anything about their unfree
subjects, and hence the latter have not been kept in their
accustomed state of servitude, nor are they forced to pay a
tax as a proof of their unfree state. So on this account they
declare that they are free and boast that they have lived in
freedom, because for a short time they have not fulfilled their
servile duties. Therefore we have issued this imperial law: (1)
If a serf, led by his desire for liberty, says that he is free, his
lord may settle the case by a duel with him, fighting either in
person or by his champion [representative], as he may wish.
The lord is given this privilege because of the great difficulty
there is in proving such things in the regular way. The unfree
man may secure a champion for himself if, because of age or
disease, he is unable to fight.(2) In order that the unfree may
not hide his real condition by avoiding his duties for a time,
we decree by this our edict, which, with the help of God, shall
be valid forever, that hereafter each one shall show his servile
condition by paying a denar of the ordinary currency every
year on the first of December to his lord or to the agent
whom he shall appoint for this purpose. (3) The children of
the free shall begin to pay this tax as a proof of their servile
condition in their twenty-fifth year and at the appointed time.
And no matter how long they may avoid paying this tax, they
shall not thereby become free. (4) If any unfree man
belonging to the church shall disobey this edict, he shall be
fined one-half of all his goods and he shall be reduced to his
former unfree condition. For an unfree man of the church
may never become free. We strictly forbid the unfree of the
churches to be set free, and we order all those who have, by
any device, been freed to be reduced to servitude again.

290. Henry I Frees a Serf, 926.


Bresslau, Centum Diplomata, pp. 3 f.

There were many ways in which a serf could be set free, but
after 850 the form used in this document was not uncommon.
A freeman was to a great extent dependent on his relatives
as witnesses. He could not prove his freedom without their
testimony. When a serf was set free he was without a family,
because his relatives, being serfs, could not testify in court.
The charter which the king gave him was the only evidence of
freedom which he possessed. It took the place of the
testimony of his relatives.

When a serf was freed he became a "freedman." But


generally he was not entirely free, for there was still a
personal bond between him and his lord, to whom he must
pay a poll-tax. The coin which was knocked out of his hand
symbolized this poll-tax. That is, his offer to pay the poll-tax
is rejected, the coin is knocked out of his hand as a symbol
that he is now entirely free, and is no longer bound to pay
the poll-tax.
In the name of the holy and undivided Trinity. Henry, by the divine
clemency king. Let all our faithful subjects, both present and future,
know that at the request of Arnulf, our faithful and beloved duke,
and also to increase our eternal reward, we have freed a certain
priest, named Baldmunt, who is our serf, born on the land of the
monastery of Campido. We freed him by striking a penny out of his
hand in the presence of witnesses, according to the Salic law, and
we have thereby released him entirely from the yoke of servitude.
And by this writing we have given a sure proof of his freedom and
we desire that he shall remain free forever. We ordain that the said
Baldmunt, the reverend priest, shall enjoy such freedom and have
such rights [that is, have the same legal status] as all those have
who up to this time have been set free in this way by the kings or
emperors of the Franks.

291. Henry III Frees a Female Serf, 1050.


Bresslau, Centum Diplomata, p. 49.

See introductory note to no. 290.

Henry, etc. Let all our faithful Christian subjects, both present and
future, know that we, at the request of a certain nobleman, named
Richolf, have freed a certain one of his female serfs, named Sigena,
by striking a penny out of her hand. We have freed her from the
yoke of servitude, and have decreed that the said Sigena shall in the
future have the same liberty and legal status as all other female
serfs have who have been freed in the same way by kings or
emperors....

292. The Recovery of Fugitive Serfs, 1224.


M. G. LL. 4to, IV, 2, no. 287.
The condition of the serfs was a hard one. They had heavy
work, poor shelter, and bad food. It is not strange that they
sought freedom by running away. The cities offered them a
good asylum, for they regarded it as a part of their law that a
serf remaining in a free city a year and a day without being
reclaimed by his lord became free. The lords objected to this,
but without effect. Since the cities refused to deliver serfs to
their lord on demand, it was necessary for the lords to enter
the city and search for them. But in doing so they ran great
risk of being stoned from the house-tops. Henry [VII]
prescribed that they should have protection from the king as
well as from the officials of the city which they wished to
search.

Henry [VII], etc.... When a quarrel arose between our cities of


Elsass and the nobles and ministerials of the same province in
regard to the serfs who had run away and gone to the cities, or
might hereafter do so, ... it was settled by the following decision: If
a serf belonging to a noble or ministerial runs away and goes to one
of our cities and stays there, his lord may recover him if he can bring
seven persons who are of the family of the serf’s mother, who will
swear that he is a serf, and belongs to the said lord. If the lord
cannot secure seven such witnesses, he may bring two suitable
witnesses from among his neighbors, who will swear that before the
serf ran away the said lord had been in peaceable possession of him,
... and he may then recover his serf. We also decree and command
that all nobles and ministerials who wish to recover their serfs may
enter a city for this purpose with our permission and protection, and
no one shall dare injure them. At their request a safe-conduct shall
be furnished them by the Schultheissen and council of the city.

293. The Rank of Children Born of Mixed Marriages is


Fixed, 1282.
Altmann und Bernheim, no. 76.
We, Rudolf, by the grace of God king, Augustus, wish by this writing
to inform all that while we were holding court at Germersheim on
Ash-Wednesday our faithful and beloved subject, Adolf, count of
Monte, presented the following question for an official decision: If
free peasants contract marriage with unfree, or with others whether
of a higher or lower social status, what shall be the status of the
children born of such mixed marriages? And all who were present
declared that children should always have the rank of that one of its
parents who has the lower social status. And by this writing we
confirm this decision as a reasonable one.

294. Frederick II Confers Nobility, about 1240.


Altmann und Bernheim, no. 74.

There was a noble class among the ancient Germans. As they


established themselves on Roman soil, the nobility itself
underwent a change and it was added to in various ways.
Through great possessions in land, and through appointment
to office, which generally led to the acquisition of lands, an
aristocratic class was formed which came to be regarded as
noble. From the tenth century the man who fought on
horseback was a knight, and hence of the noble class. As the
class became conscious of itself and its privileges, it tended to
put up barriers and exclude from its ranks all except those
who were born into it. Thus in the days of Barbarossa if a
knight were challenged by another, he could refuse to fight
him unless the challenger could prove that his grandfather
was a knight.

Frederick, etc. We wish all to know that A—— of N—— has told us
that although his father was not a knight yet he wishes to become
one. He therefore besought us to make him a knight. In order to
reward the faithfulness of him and of his family we grant his petition
and, out of the fulness of our power, we grant that, although his
father was not a knight, and although our laws forbid anyone to be a
knight who is not born of a noble family, he may nevertheless with
our permission put on the military girdle, and we forbid all people to
hinder or prevent him from doing this.

295. Charles IV Confers Nobility on a Doctor of Both


Laws, 1360.
Altmann und Bernheim, no. 78.

The king by virtue of his royal power could confer nobility on


all whom he wished. The document of Charles IV is especially
interesting as showing the degree of honor attaching to
learning. The learned man was, because of his learning, the
equal of the noble. He who had taken the Master’s degree in
both laws was thereby raised to the same social plane as the
knight, but, of course, was not thereby knighted. Charles IV
recognized this principle and conferred knighthood on his
friend, the professor, who had received this degree.

Charles IV, by divine clemency emperor of the Romans, Augustus,


and king of Bohemia, sends his favor and wishes all good to the
honorable Wycker, scholasticus{123} of the church of St. Stephen of
Mainz, his [that is, the emperor’s] chaplain, intimate table
companion, and devoted and beloved member of his household.

Beloved and devoted: Although, according to your birth and to the


standards of the world, you were not born of a noble family and are
not reckoned as a knight, nevertheless, because you are adorned
with so great and remarkable knowledge of both the civil and canon
law, that it supplies what you lack by birth [that is, nobility], in
imitation of our predecessors, the emperors of great and renowned
memory, we regard your knowledge and ability as the equivalent of
nobility, and out of the fulness of our imperial power we decree that
you are noble and knightly, and of the same rank, honor, and
condition as any other noble and knight. Therefore we strictly
command all princes, ecclesiastical and secular, counts, chiefs,
nobles, and all our other faithful subjects, to whom this letter may
come, under threat of the loss of imperial favor, to regard, hold, and
treat you as such [that is, as a knight], in all places; and out of
reverence for the holy empire to admit you to all the rights,
privileges, etc., which noblemen are accustomed to enjoy....

{123} That is, he was a professor in the school connected


with that church.

296. The Law of the Family of the Bishop of Worms,


1023.
Altmann und Bernheim, no. 62; M. G. LL. 4to, I. pp. 640 ff.

The bishop of Worms was a large landholder, possessing a


great deal of the land in the city as well as in the country.
This land may be divided into two groups according to the
way in which it was held and tilled. Some of it was let out as
fiefs, and from this the bishop received only the regular
feudal dues according to the terms on which he let it out. The
rest of his land was called the domain, and was tilled by serfs
who lived on it and were attached to it. There was great
variety in the condition of the serfs. Some of them had little
or no right to the products of their labors, except to what
they needed to eat and wear. It would of course be
impossible for such to acquire property. Others had a right to
a greater or less share of the products of their labors, and
hence they could amass property. Through their wealth all
such could, in the course of time, improve their condition and
rise in the social scale. All those of this servile group were
unfree; they were bondmen of the church. All of them taken
together were called the family of St. Peter. They were
attached to the soil which they tilled, paid a tax in money or
in kind, or rendered services, and were under the protection
of the church and the jurisdiction of the bishop.

From paragraphs 9, 13, 16, etc., we learn that there were two
classes of these serfs, the fisgilini, and the dagewardi. Of
these the fisgilini were the higher in the social scale.
According to paragraphs 9 and 29 they had a share in the
wergeld of members of their family and they were not
compelled to render services except of a certain kind or in
certain departments of the bishop’s household. The services
which they were bound to render were considered less
servile, less ignoble, than those required of the dagewardi.
From these facts it is inferred that their ancestors had at one
time been free, but had surrendered their lands and their
freedom and become bondmen of the church for the sake of
securing protection. Bishops and abbots were generally
regarded as lenient lords in comparison with secular princes,
and many preferred to become bondmen of the church rather
than of secular lords. The lands which they held they passed
on from father to son (par. 2 and 3), and they could amass
property and dispose of it (par. 1 and 4). From paragraphs
26, 27, and 28 there seems to have been some difference
between the fisgilini who lived in the city and those who lived
in the country. The former were no doubt artisans, the latter,
peasants. But it is not clear what other differences existed
between them.

Besides these bondmen, mention is made in the introduction


and par. 14 of knights and freemen. These were the vassals
of the bishop, holding the lands of the church as fiefs. They
were not included in the "family of St. Peter."

Three officials are mentioned. (1) The advocate was a layman


who represented the bishop and the church in all secular
matters, held the three regular courts of the year, collected
the fines which fell to the bishop, etc. In theory he was the
protector of the church against all violence and oppression,
but not infrequently he took advantage of his position, and by
threats and other unjust measures oppressed the church and
extorted money from it. (2) The vidame was the aid or
representative of the advocate and assisted him in the
administration of his office. (3) The "official" of the
introduction is the same as the "local official" in paragraphs 2,
12, and 24. As the people on these lands lived in villages, he
was probably the official whom the bishop entrusted with the
government of the village. He held the local or village court.
(See note to par. 13.) There were scabini or Schoeffen who
assisted all these officials in administering justice (see
Glossary).

In par. 29 we have the origin of a new class which came to be


called ministerials. Since no. 297 treats of them especially, the
student is referred to it for a discussion of this class.

Although not logically arranged, this document is in fact a


little code of laws for the government of the bondmen of the
church. A careful analysis of each paragraph is recommended
and the student will find it profitable to attempt a
classification of its provisions. The laws concerning the
different classes should at least be grouped together.

This family of St. Peter may be regarded as a partial cross


section of the society in and about Worms, showing many of
the layers of which that society was composed. The bishop’s
lands were no doubt scattered about, and not in one mass.
So there were other serfs, probably of different grades, as
were the fisgilini and dagewardi, and other freemen, knights,
etc., living as neighbors to the serfs and vassals of the bishop.

Because of the frequent lamentations of my unfortunate subjects


and the great injustice done them by many who have habitually
wronged the family of St. Peter, imposing different laws upon them
and oppressing all the weaker ones by their unjust judgments and
decisions, I, Burchard, bishop of Worms, with the advice of my
clergy, knights, and of all my family, have ordered these laws to be
written, in order that hereafter no advocate, nor vidame, nor official,
nor any other malicious person may be able to add any new law to
the detriment of the afore-mentioned family, but that the whole
family, rich and poor alike, may have the same law.

1. If anyone of the family of St. Peter legally marries a woman who


is also a member of the family, and gives her a dower and she
has peaceable possession of it for a year and a day, then if the
man dies, the wife shall hold the whole of the dower until she
dies. When the woman dies, if they had no children, the dower
goes to the nearest heirs of the man. If the woman dies first,
the same disposition shall be made of it [that is, it reverts to the
husband and his heirs]. If after marriage they acquire property,
when one of them dies, the other shall have it and do what he
will with it. If the wife brought any property to her husband at
the time of marriage, at the death of both, their children, if they
have any, shall inherit it. If they have no children, it shall return
to her relatives unless she gives it away before her death. If the
children die after inheriting it, it shall return to the nearest
relatives of their mother.
2. If anyone has inherited a piece of land with serfs, and becomes
poor and is forced to sell it, he must first, in the presence of
witnesses, offer to sell it to his nearest heirs. If they will not buy
it, he may sell it to any member of the family of St. Peter. If a
piece of land has, by judicial process, been declared forfeited to
the bishop [because the holder has not paid the proper dues or
rendered the due services], and any one of the heirs of the one
who held it wishes to pay the back dues, he may do so and
receive the land. But if no heir wishes to pay the back dues, the
local official may let the land to any member of the family he
may wish, and the one thus receiving it shall hold it. If after a
few years someone comes and says: "I am the heir. I was poor,
I was an orphan, I had no means of support, so I left home and
have been supporting myself in another place by work," and if
he tries by his own testimony alone to dispossess him who, with
the consent of the bishop, received the land, and who has
cultivated it well and improved it, he shall not be able to do so.
For since there was no heir at the time who was willing to pay
the back dues, let him to whom the local official gave it keep it.
For [it may be said to the new claimant]: "If you were the heir,
why did you go away? Why did you not stay at home and look
after your inheritance?" No hearing shall be granted him unless
he has a good and reasonable excuse [for his absence]. If
anyone who has a piece of land by hereditary right dies leaving
a child as heir, and this child is not able to render the service
due, and there is a near relative who is willing to render the due
service for this land until the heir becomes of age, he may do
so. But let the heir not be disinherited because of his youth. We
beg that he may be treated mercifully in this matter [that is,
that he may receive his inheritance when he comes of age].
3. If anyone on our domain land dies leaving an inheritance, his
heir shall receive it without being bound to give us a present,
and thereafter he shall render the due service for it.
4. If any member of the family dies leaving free property, unless
he has given it away, his nearest heirs shall inherit it.
5. If anyone in the presence of witnesses and with the consent of
his wife parts with [alienates] any piece of property, no matter
what it is, the bargain shall stand unless there is some other
good reason for breaking it.
6. If anyone sells his land or his inheritance to another member of
the family in the presence of one of his heirs, and that heir does
not object at the time, he shall never afterwards have the right
to object. If an heir were not present, but, after learning of the
sale, did not object within that year, he shall afterwards not
have the right to object to it.
7. If anyone is, by the judgment of his fellows, put "into the
bishop’s hand," he and all his possessions are in the bishop’s
power.
8. If anyone takes some of his fellows and does some injustice to a
member of the family, he shall pay a fine for himself and for his
accomplices and each one of them shall pay his own fine.
9. Five pounds of the wergeld of a fisgilinus go to the bishop’s
treasury and two and one-half pounds go to his friends [kin].
10. If a man and his wife die leaving a son and a daughter, the son
shall receive the inheritance of the servile land [i.e., the land
which the father held], and the daughter shall receive the
clothing of her mother and all the cash on hand. Whatever
other property there is shall be divided equally between them.
11. If anyone has received a piece of land and serfs by inheritance,
and takes his bed because of illness so that he cannot ride on
horseback or walk alone, he shall not alienate [dispose of in any
way] the land and serfs to the disadvantage of his heirs, unless
he wishes to give something for the salvation of his soul. All his
other property [that is, all that he has gained in addition to
what he inherited] he may give to whomever he wishes.
12. In order that there may not be so many perjuries, if any
member of the family has done some wrong to a fellow-member
in the matter of land, or vineyards, or any other less important
thing, and the case has been brought before the local official,
we desire that the local official shall, with the aid of his fellows,
decide the case without having anyone take an oath.
13. If any fisgilinus does an injustice, either great or small, he shall,
like the dagewardus, pledge five solidi to the treasury of the
bishop and pay five solidi as composition to him to whom he did
the wrong, if he is of the same society. If he is outside his
society he shall pledge one ounce and no oath shall be taken.
14. If anyone from the bishop’s domain lands marries someone who
belongs to a fief which is held from the bishop, he shall continue
to be under the bishop’s jurisdiction. If anyone from such a fief
marries someone from the bishop’s domain land, he shall
continue under the jurisdiction of the lord of the fief on which
he lives.
15. If anyone marries a foreign woman [that is, one who does not
live on the bishop’s territory], when he dies two-thirds of their
possessions shall go to the bishop.
16. If a fisgilinus marries a dagewarda, their children shall be of the
lower rank; and likewise if a dagewardus marries a fisgilina.
17. If anyone makes an unjust outcry in court, or becomes angry
and leaves the court, or does not come in time to the court, and
those sitting in the court with him do not convict him of this, he
shall not take an oath about it, but the Schoeffen shall decide it.
18. If anyone has a suit against his fellow, he alone shall take an
oath about it. But if it concerns a feud, or is against the bishop,
he shall have six men [compurgators] to take an oath with him.
19. It has frequently happened that if one lent his money to
another, the borrower would repay as much as he wished and
then swear that he owed no more. In order to prevent perjury
we have decreed that the lender need not accept the oath of
the borrower but may, if he wishes, challenge him to a duel,
and so [by defeating him] prove his indebtedness. If the lender
is so important a person that he does not wish to fight the
borrower on such an account, he may appoint someone to fight
for him.
20. If anyone in the city of Worms is convicted by losing a duel, he
shall pledge sixty solidi. If he is defeated by a member of the
family who lives outside of the city, he shall pay the victor three
times the amount of the fine, because he challenged him
unjustly, and he shall pay the bishop’s ban, and twenty solidi to
the advocate, or he shall lose his skin and hair [that is, he shall
be beaten and his head shaved].
21. If anyone of the family of St. Peter buys a piece of land and
serfs from a free man [that is, one who is not a member of the
family], or has acquired it in any other way, he shall not dispose
of it to anyone outside of the family, unless he exchanges it [for
other land and serfs].
22. If anyone attempts to reduce a fisgilinus to the rank of a
dagewardus and subject him to an unjust poll tax [as a symbol
of his servile rank], the fisgilinus shall prove his rank by the
testimony of seven of his nearest relatives, but he shall not hire
them for this purpose. If the charge is made that his father was
not a fisgilinus, two female witnesses shall be taken from his
father’s family and one from his mother’s. If it is said that his
mother was not of that rank, two shall be taken from her family
and one from his father’s family, unless he can prove his rank by
the testimony of the Schoeffen or of his relatives.
23. If any member of the family enters the house of another with
an armed force and violates his daughter, he shall pay to her
father, or to her guardian, three times the value of every piece
of clothing which she had on when she was seized, and to the
bishop his ban for each piece of clothing. And he shall also pay
to her father a triple fine and the bishop’s ban. And because the
law of the church does not permit him to marry her, he shall
appease her family by giving to twelve members of it twelve
shields and as many lances and one pound of money.
24. If anyone confesses a debt in the presence of the local official
but the said official has not the time to render a decision that
day, and he who confessed the debt denies it the next day, the
said official, if he had a witness to the confession, shall render
the decision in accordance with the confession.
25. But if the said official had no witness to the confession, he shall
render the decision according to what the man says in court and
not according to his former confession.
26. If anyone in the city has inherited a building site, it cannot be
declared forfeited to the bishop unless he has refused to pay
the tax and all other dues for three years. After he has failed to
pay these dues for three years, he shall be summoned to court
three times, and if he wishes to pay all the back dues he may
do so and retain the building site. If he sells the house, he
forfeits the building site.
27. If anyone in the city strikes another so hard that he knocks him
down, he shall pay sixty solidi to the bishop. If he strikes
another with his fist or a light stick without knocking him down,
he shall pay only five solidi.
28. If anyone in the city draws his sword to kill another or stretches
his bow and puts an arrow on the bow-string, or tries to strike
him with his lance, he shall pay sixty solidi.
29. If the bishop wishes to take a fisgilinus into his service, he may
put him to work under the chamberlain, or the cup-bearer, or
the steward [dish-bearer], or the master of the horse, or under
the official who has charge of the bishop’s lands and collects the
dues from them [i.e., the advocate]. But if he does not wish to
serve the bishop in any of these departments of the bishop’s
household, he may pay four denars every time the bishop is
summoned by the king to call out his men for the purpose of
fighting, and six when the bishop is summoned to accompany
the emperor to Rome, and he must attend the three regular
sessions of court which are held every year, and then he may
serve whomsoever he wishes.
30. Homicides take place almost daily among the family of St. Peter,
as if they were wild beasts. The members of the family rage
against each other as if they were insane and kill each other for
nothing. Sometimes drunkenness, sometimes wanton malice is
the cause of a murder. In the course of one year thirty-five serfs
of St. Peter belonging to the church of Worms have been
murdered without provocation. And the murderers, instead of
showing penitence, rather boast and are proud of it. Because of
the great loss thus inflicted on our church, with the advice of
our faithful subjects, we have made the following laws in order
to put an end to such murders. If any member of the family of
St. Peter kills a fellow member except in self-defence, that is,
while defending either himself or his property [against the
attacks of the man whom he kills], we decree that he shall be
beaten and his head shaved, and he shall be branded on both
jaws with a red-hot iron, made for this purpose, and he shall
pay the wergeld and make peace in the customary way with the
relatives of the man whom he killed. And those relatives shall be
compelled to accept this. If the relatives of the slain man refuse
to accept it and make war on the relatives of the murderer,
anyone of the latter may secure himself against their violence
by taking an oath that he knew nothing of the murder and had
nothing to do with it. If the relatives of the slain man disregard
such an oath and try to injure the one who took it, even though
they do not succeed in doing so, they shall be beaten and have
their heads shaved, but they shall not be branded on the jaws.
But if they kill him or wound him, they shall be beaten and their
heads shaved, and they shall be branded on the jaws. If a
murderer escapes, all his property shall be confiscated, but his
relatives, if they are innocent, shall not be punished for him. If
the murderer does not flee, but, in order to prove his innocence
[that is, that he acted in self-defence], wishes to fight a duel
with some relative of the slain man, and if he wins [in the duel],
he shall pay the wergeld and satisfy the relatives of the slain
man. If no relative of the slain man wishes to fight a duel with
the murderer, the murderer shall clear himself before the bishop
with the ordeal of boiling water, and pay the wergeld, and make
peace with the relatives of the slain man, and they shall be
compelled to accept it. If through fear of this law the relatives
of the slain man go to another family [that is, to people who do
not belong to the family of St. Peter], and incite them to
violence against the relatives of the murderer, if they will not
clear themselves by a duel [that is, prove that they did not
incite them, etc.], they shall clear themselves before the bishop
by the ordeal of boiling water, and whoever is proven guilty by
the ordeal shall be beaten, his head shaved, and he shall be
branded on the jaws. If any member of the family who lives in
the city kills a fellow member except in self-defence, he shall be
punished in the same way, and besides he shall pay the bishop’s
ban, and the wergeld, and make peace with the relatives of the
slain man, and they shall be compelled to accept it. If any
foreigner [that is, one who does not belong to the family of St.
Peter] who cultivates a piece of St. Peter’s land [that is, holds it
as a fief from the bishop], kills a member of the family of St.
Peter except in self-defence, he shall either be punished in the
same way [that is, by beating, etc.], or he shall lose his fief and
he shall be at the mercy of the advocate and the family of St.
Peter [that is, they may carry on a feud against him, and slay
him]. If anyone who is serving us [that is, anyone who is
serving the bishop in one of the five departments named in
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookname.com

You might also like