Spring Integration Essentials Chandan Pandey download
Spring Integration Essentials Chandan Pandey download
download
https://ebookbell.com/product/spring-integration-essentials-
chandan-pandey-55587838
https://ebookbell.com/product/spring-integration-essentials-chandan-
pandey-11017858
https://ebookbell.com/product/spring-integration-in-action-1st-
edition-mark-fisher-jonas-partner-2609568
Pro Spring Integration 1st Edition Dr Mark Lui Mario Gray Andy Chan
https://ebookbell.com/product/pro-spring-integration-1st-edition-dr-
mark-lui-mario-gray-andy-chan-2123414
https://ebookbell.com/product/just-spring-integration-madhusudhan-
konda-2617958
Pivotal Certified Spring Enterprise Integration Specialist Exam A
Study Guide Lubos Krnac Auth
https://ebookbell.com/product/pivotal-certified-spring-enterprise-
integration-specialist-exam-a-study-guide-lubos-krnac-auth-5353212
https://ebookbell.com/product/spring-boot-messaging-messaging-apis-
for-enterprise-and-integration-solutions-1st-ed-felipe-
gutierrez-5850290
https://ebookbell.com/product/spring-boot-messaging-messaging-apis-
for-enterprise-and-integration-solutions-2nd-edition-felipe-
gutierrez-231859146
https://ebookbell.com/product/regional-integration-and-national-
disintegration-in-the-postarab-spring-middle-east-1st-edition-imad-h-
elanis-natasha-underhill-51605332
https://ebookbell.com/product/spring-boot-30-crash-course-mastering-
spring-boot-from-application-development-to-advanced-security-data-
access-integration-and-deployment-58709300
Spring Integration Essentials
Table of Contents
Spring Integration Essentials
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
How enterprise integration challenges can be solved
Who are the players?
Why Spring Integration?
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Getting Started
Setting up STS
Creating your first project
STS visual editor
Spring Integration Scala DSL
Summary
2. Message Ingestion
Working with message channels
Channel types
Spring implementation of channels
Selecting a channel
Publish-subscribe channel
Queue channel
Priority channel
Rendezvous channel
Direct channel
Executor channel
Scoped channel
Datatype channel
Error handling on channels
Persisting and recovering channels
Channel interceptors
Summary
3. Message Processing
Message endpoints
Gateways
Synchronous gateways
Asynchronous gateways
Service activators
Delayers
Transactions
Summary
4. Message Transformers
Introducing message transformers
Working with XML payload
The marshalling transformer
The unmarshalling transformer
XPath transformers
Validating XML messages
Beyond default transformers
Content enrichers
Header enrichers
Payload enrichers
Claim check
Incoming claim check transformer
Outgoing claim check transformer
Summary
5. Message Flow
Routers
Payload-type router
Header value router
Recipient list router
XPath router
Error message exception-type router
Default output channel
Using annotations
Filters
Using a Java class to act as a filter
Configuring a filter as a message endpoint
Splitters
Aggregators
Correlation strategy
Release strategy
Message store
Resequencers
Chaining handlers
Summary
6. Integration with External Systems
Working with files
Prerequisites
Reading files
Behind the scenes
Filters
Preventing duplicates
Concurrent access
Writing files
Naming the file
Target directory
Dealing with existing filenames
File transformers
FTP/FTPS
Prerequisites
Downloading files from the FTP server
Incomplete files
Uploading files to the FTP server
Avoiding partially written files
FTP outbound gateway
FTPS support
Social integration
Prerequisites
Receiving tweets
Sending tweets
Twitter search outbound gateway
Enterprise messaging
Prerequisites
Receiving messages – the inbound adapter
The polling adapter
The event-driven adapter
Sending messages – the outbound adapter
Gateway
The inbound gateway
The outbound gateway
HTTP
Prerequisites
The HTTP inbound gateway
The HTTP outbound gateway
Web services
Prerequisites
The inbound gateway
The outbound gateway
Database SQL
Prerequisites
Datasource
Reading from the database – the inbound adapter
Transaction support
Writing to the database – the outbound adapter
Inbound and outbound gateways
Stream processing
Prerequisites
Reading from a stream
Writing to a stream
Summary
7. Integration with Spring Batch
Spring Batch
Prerequisites
Defining a Spring Batch job
The Spring Batch job language
ItemReader
ItemWriter
Spring Batch and Spring Integration
Launching the job
Tracking the status of a batch job
The other way round
Summary
8. Testing Support
Prerequisite
Testing messages
Testing headers
Handling errors
Testing filters
Splitter test
Summary
9. Monitoring, Management, and Scaling Up
Monitoring and management
JMX support
Prerequisites
The notification listening channel adapter
The notification publishing channel adapter
The attribute polling channel adapter
The tree polling channel adapter
The operation invoking channel adapter
The operation invoking outbound gateway
The MBean exporter
Tracking the message
Wire tap
Control bus
Scaling up
Threading
Scaling the state
Message store
Claim check
Summary
10. An End-to-End Example
Prerequisites
Setting up
Ingesting data
Ingesting data from the RSS feed
Ingesting data from an FTP server
Filtering the data
The aggregator
The correlation bean
The completion bean
The aggregator bean
The splitter
Transformation
The DB transformer
The JMS transformer
The mail transformer
Router
Integration
Database integration
Prerequisites
The gateway
The service activator
Gateways for updating and reading the feeds
Sending a mail
Putting messages on to the JMS queue
Exporting as an MBean
Summary
Index
Spring Integration Essentials
Spring Integration Essentials
Copyright © 2015 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system,
or transmitted in any form or by any means, without the prior written permission of the
publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the
information presented. However, the information contained in this book is sold without
warranty, either express or implied. Neither the author, nor Packt Publishing, and its
dealers and distributors will be held liable for any damages caused or alleged to be caused
directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the
companies and products mentioned in this book by the appropriate use of capitals.
However, Packt Publishing cannot guarantee the accuracy of this information.
First published: February 2015
Production reference: 1160215
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78398-916-4
www.packtpub.com
Credits
Author
Chandan Pandey
Reviewers
Marten Deinum
Biju Kunjummen
Xinyu Liu
Luca Masini
Commissioning Editor
Julian Ursell
Acquisition Editor
Richard Brookes-Bland
Content Development Editors
Sharvari Tawde
Ritika Singh
Technical Editor
Aman Preet Singh
Copy Editors
Roshni Banerjee
Pranjali Chury
Project Coordinator
Judie Jose
Proofreaders
Ameesha Green
Joanna McMahon
Indexer
Monica Ajmera Mehta
Production Coordinator
Nilesh R. Mohite
Cover Work
Nilesh R. Mohite
About the Author
Chandan Pandey is an Oracle Certified Enterprise architect with more than 10 years of
experience in designing, coding, and delivering enterprise applications using various tools
and technologies. He has always been amused by the power of software that reduces the
boredom of repetitive tasks and introduces agility and efficiency. He firmly believes that
tools, technology, and methodology are a medium to provide a solution and would like to
be positioned as a solutions expert rather than limiting his identity to a framework or tool.
This is reflected in the breadth and depth of his work; he is proficient not only in
traditional languages and frameworks such as Java/JEE and Spring, but also in Groovy
and Grails, Vaadin, and Play Framework, to name a few. His domain experience varies
from blogging applications, web frameworks, content management systems, and finance,
to networking & telecom. For him, the end result should be extendable, scalable, secure,
and easy-to-use systems!
He believes in community ecosystems and tries to share his learning with larger audiences.
He writes regularly at www.chandanpandey.com, and this book is a step forward to
connect with the community.
When he is not working or writing, he likes to go on road trips with his family to explore
new avenues—be it spiritual, historical, or just a leisure tour! India being his home
country, he is never short of surprises and variety!
Acknowledgments
I would like to thank the team at Packt Publishing. Richard, thanks a lot for finding my
blog on Spring Integration and presenting me with an opportunity to share my knowledge
in a more formal way and with a wider audience, and thanks for answering all of my
questions with such patience—a few of which often took pages! I would like to thank
Sharvari and Ritika, who are the content development editors for this book. Sharvari’s
support and help with the technical review and incorporation of subsequent feedback was
unprecedented. Aman Preet, the technical editor of the book, did a brilliant job with the
final edit.
The greatest support is not what we see but the silent love and prayers of all our well-
wishers. My parents’ blessings have always been with me. They are not technical and they
do not understand what I do—but their unflinching confidence in me that whatever I am
doing must be correct not only pumps up my confidence, but also puts a lot of
responsibility on me. I hope I will not disappoint them ever.
Without a supportive family, it’s extremely difficult to achieve anything significant—and I
consider myself lucky on that front. I am indebted to the charming smiles of my 2-year-old
son, Aadish, and my 4-year-old daughter, Aashirya—their innocent smiles always remind
me that happiness is beyond material success or anything else. As for my better half,
Priyanka, I honestly believe that her work is more creditable than mine. Bringing up two
small kids without any help from me, while at the same time supporting me throughout
this assignment—a simple “thanks” will be too small a word for her, so I will leave it up
to her to understand my gratitude!
About the Reviewers
Marten Deinum is a Java/software consultant working for Conspect. He has developed
and architected software, primarily in Java, for small and large companies. He is an
enthusiastic open source user and a longtime fan, user, and advocate of the Spring
Framework. He has held a number of positions, including that of a software engineer,
development lead, coach, and a Java and Spring trainer. He has also authored the book Pro
Spring MVC: with Web Flow, published by APress.
When not working or answering questions on StackOverflow, he can be found in water,
training for triathlons or under the water, diving or guiding other people around.
Xinyu Liu graduated from George Washington University, Washington, D.C. He has
worked for healthcare companies, a state government agency, and a leading e-commerce
company with over 12 years’ intensive application design and development experience.
During his years of service, new application design and implementation methodologies
and strategies were established due to his efforts. His skills cover broad domains such as
web development, enterprise application integration, and big data analytics. He writes for
Java.net, Javaworld.com, IBM developerWorks, and developer.com on a variety of topics,
including web technologies, web security, persistence technologies, rule engine, and big
data. In addition, he worked on the review of the books Spring Web Flow 2 Web
Development, Grails 1.1 Web Application Development, and Application Development for
IBM WebSphere Process Server 7 and Enterprise Service Bus 7, all published by Packt
Publishing.
Special thanks to my son, Gavin Liu, and my wife, Xiaowen Zhou.
Luca Masini is a senior software engineer and architect, born as a game developer for
Commodore 64 (Football Manager) and Commodore Amiga (Ken il guerriero). He soon
converted to object-oriented programming and was attracted by the Java language since its
early days in 1995.
He worked on this passion for Java as a consultant for major Italian banks, developing and
integrating the main software projects for which he has often taken the technical
leadership. He made them adopt Java Enterprise in environments where COBOL was the
flagship platform, converting them from mainframe-centric to distributed.
He then shifted his focus toward open source, starting with Linux and then enterprise
frameworks with which he was able to introduce concepts such as IoC, ORM, and MVC
with low impact. He was an early adopter of Spring, Hibernate, Struts, and a whole host of
other technologies that gave his customers a technological advantage and therefore
development cost cuts in the long run.
After introducing these new technologies, he decided that it was time for the
simplification and standardization of development with Java EE. So, he’s now working in
the ICT department of a large Italian company where he introduced build tools (Maven
and Continuous Integration), archetypes of project, and Agile development with plain
standards.
Now, his attention is focused on “mobilizing” the enterprise and he is working on a whole
set of standard and development processes to introduce mobile concepts and applications
for sales force and management.
He has worked on the following books by Packt Publishing:
Securing WebLogic Server 12c
Google Web Toolkit
Spring Web Flow 2
Spring Persistence with Hibernate
Spring Batch Essentials
www.PacktPub.com
Support files, eBooks, discount offers, and
more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and
ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as
a print book customer, you are entitled to a discount on the eBook copy. Get in touch with
us at <service@packtpub.com> for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up
for a range of free newsletters and receive exclusive discounts and offers on Packt books
and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt’s online digital
book library. Here, you can search, access, and read Packt’s entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access
PacktLib today and view 9 entirely free books. Simply use your login credentials for
immediate access.
“I would like to dedicate this work to my late grandmother. She was a living example
of unconditional love, integrity, and truthfulness. May god give me enough strength
and wisdom to build a character and live a life like hers!”
Preface
Software has been an integral part of enterprises and a key contributor to their growth. Be
it analytics, user experience, social marketing, decision support systems, or any other
functional domain, software has been used to aid smooth and efficient functioning.
Enterprises start small and grow over a period of time, and so does their software
dependency. Enterprise applications are developed over a period of time. The following
aspects pose certain challenges while dealing with enterprise software:
They are distributed across a set of domains, for example, payroll, inventory,
reporting, and social integration.
Each of these modules might have been developed independent of each other and
may be on different platforms, for example, employee self-portal in J2EE stack,
legacy records management on mainframes, CRM system using Salesforce, with
some real-time application in their proprietary implementation.
These modules need to interact with each other and with external systems as well.
They may have to consume data from external sources through SOAP services or
shared files, or they themselves have to share data though one of many data-sharing
techniques.
As software grows old, we need to introduce new platforms and replace existing
modules to alleviate the growing maintenance cost. A rip and replace strategy would
not work; rather, this should be done in a homogenous way without disturbing the
sanity of existing modules during the transitions.
Integration of these modules either inside organizations or with external partners is
inherently complex, requiring integration of heterogeneous endpoints. This is the kind of
scenario that Enterprise Application Integration tries to address. Enterprise Integration
Patterns (EIP) is a collection of standard enterprise challenges and how can they be
handled. Spring Integration is one of the implementations of the EIP that provides many
off-the-shelf components recommended by EIP.
How enterprise integration challenges can
be solved
Many approaches have been tried to make the integration simple without compromising
on vital aspects of enterprise, such as security, transaction, availability, reliability, and so
on. A few of the prominent methodologies used over time are Java Connector
Architecture (JCA), RMI, RPC, and CORBA for platform-agnostic integration, message
brokers with system adapter, and many more. Under the hood, they try to solve integration
issues through one of the following techniques:
Shared File: This is the simplest approach. Systems can write data in a predefined
format to a file, which can be read by other endpoints. An adapter might be needed to
convert a format between two different endpoints. Let’s consider an example, a daily
report used to be generated in a CSV file. Over time, the organization established a
web presence and reports need to be pushed online now. How can this be achieved?
The simplest way is to dump it in files that will be read by an adapter and fed into the
CMS system. A filesystem is simple but not the best solution; it is not transactional.
What if a particular file is corrupt, or what if at poll interval files are not available
due to network failure? This necessitates the introduction of a complex system that
has a retry mechanism, filter capabilities, and many more nonfunctional aspects such
as secure access, archival, and so on.
Shared database: This addresses a few of the challenges that are addressed by the
filesystem, such as transactional behavior, role-based access, performance tuning,
distributed support, and so on. The common mechanism is a set of join tables—one
application writes data in a schema that is understood by others. On the flip side, this
introduces tight coupling; if there is a change in schema, both the systems need to be
updated accordingly. Evolving applications will become a challenge, as they will
have to factor in the external system limitations. The integration effort might itself
start with lot of hiccups, for example, compatibility issues between the SQL provided
by database vendors of the application, data format, and types in their table. For
example, if one system stores only the date while the other stores the date with time
stamp, depending on need, at least one will have to change format.
Remote procedure calls: This mechanism introduces a paradigm where each system
can offer services by publishing the contract. These paradigms can be a method,
parameters, result, and error. For example, an EJB service or a SOAP service can be
exposed for providing raw data for a reporting module that renders it in multiple
formats. The most limiting aspect is synchronous behavior, where systems have to
wait for the result. There are other challenges such as serialization of data, network
latency, performance issues of a module, which can bring down the whole
application, and so on. From a security aspect, exposing the method name and
parameter invites hackers to exercise their creativity.
Messaging: This introduces the asynchronous model in which two heterogeneous
modules can interact through data over a predefined connection. The greatest
advantage is decoupling—none of the systems are dependent on the availability of
the other and they can participate or withdraw from integration without impacting
other components. JMS is an example of message-based integration. Spring
Integration is based on this paradigm where multiple endpoints connect on to a
channel, produce or consume messages, and perform further processing based on
information in a message. We will deal with channel, endpoints, message payload,
and other concepts in the upcoming chapters.
Even if we use one of the preceding techniques, enterprise systems are way outward from
each other and all of them might not be working all the time. This necessitated the use of
middleware that can orchestrate reliable communication between these disparate
endpoints, typically called an Enterprise Service Bus (ESB). In layman’s terms, ESB can
be defined as the middle man who enables communication to and fro between
heterogeneous interfaces.
Who are the players?
As we have been discussing, the problem of enterprise integration is complex and many
vendors have tried to address it in their own propitiatory ESB framework—earlier it used
to be dominated by commercial vendors such as Tibco, Vitria, IBM MQSeries, Oracle
SOA Suite, Microsoft BizTalk, and so on. Over time, the need for open source frameworks
became evident as smaller organizations grew. Their integration needs were limited and
were incapable of investing upfront with any of these biggies.
Some of the prominent open source integration frameworks, apart from Spring Integration,
are Camel, Service Mix, Mule ESB, Open ESB, and so on. A comprehensive comparison
of these frameworks is beyond the scope of this book but a small summary of two other
major open source frameworks, has been provided here for the sake of emphasizing
Spring Integration simplicity:
Mule ESB: It is a standard server, solutions are developed and deployed inside them.
Mule is one of the most prominent and stable solutions on the market. The point to be
observed here is that, it’s a container that holds the application.
Service Mix (SM): Apache Service Mix is built over JAVA legacy JBI (Java
Business Integration). Service Mix tries to solve almost all aspects of enterprise
integration by unifying the features and functionality of ActiveMQ, Camel, CXF,
ODE, and Karaf. It provides a complete, enterprise-ready ESB, exclusively powered
by OSGi. Since it tries to address a lot of modules, it is pretty bulky compared to
Spring Integration.
Why Spring Integration?
Spring Integration is an open source effort to address integration challenges; it is based on
the Spring Framework, which is the most widely used Java-based framework in
organizations. It introduces the simple POJO-based programming model to support
standard integration patterns.
It’s lightweight; all it needs is couple of jars for which Maven targets are readily available.
A quick comparison shows that the Service Mix download is around 55 MB while Spring
Integration is just 14 MB in size.
Spring Integration is just a set of standard Java libraries; the solution gets deployed in
the application instead of that application getting deployed in some containers, as in
the case of SM and Mule.
For enterprises that are already using Java and Spring, it eases the integration effort as it
follows the same idioms and patterns of the Spring Framework.
What this book covers
Chapter 1, Getting Started, explains how to set up the Eclipse IDE, a “Hello World”
program, and a brief introduction of how Spring ROO can ease the configuration aspects
even further. This will help overcome configuration nightmares and warm up developers
to a hands-on experience.
Chapter 2, Message Ingestion, introduces channels through which messages can be read
and processed. It describes the point-to-point and pub-sub models, which one is best suited
for a given scenario, how errors can be handled in a decoupled manner on a channel, and
finally how in-memory channels can be backed up with persistence for failover and
recovery solutions.
Chapter 3, Message Processing, explains how to define components that can apply
business logic on messages, introduces decoupled logging that can used for auditing, and
discusses adding transactional behavior.
Chapter 4, Message Transformers, deals with processing message formats, its conversion
to a homogenous format, and how annotations can help keep the configurations clean.
Messages can be introduced in heterogeneous formats such as XML, JSON, and so on that
need to be converted to a format understood by the system.
Chapter 5, Message Flow, will introduce flow aspects to messages such as filtering
messages that do not comply to validation rules, routing them to an error branch, splitting
messages, and redirecting them to components appropriate for their processing—waiting
for incomplete payloads, aggregating partial messages, and finally the chaining of
business processing handlers.
Chapter 6, Integration with External Systems, will give a hands-on overview of integration
points. Integration with external systems is the most interesting and powerful aspect of
Spring Integration—interaction with external systems is a matter of a few lines of
configuration. Spring Integration has introduced adapters, gateways, and other
components that make it a breeze to interact with filesystems, SQL, NoSQL persistence
store, HTTP services, and other widely used external entities such as different servers,
social media, and so on.
Chapter 7, Integration with Spring Batch, will introduce how to use Spring Integration and
batch module for scheduling, triggering, and monitoring batch jobs.
Chapter 8, Testing Support, will explain how to leverage the readily available mocks for
different components, what to test, and how much to test.
Chapter 9, Monitoring, Management, and Scaling Up, will cover using Spring Integration
configuration to leverage JMX to get performance statistics of different configured
components in the system. We will also peek into ways to scale up Spring Integration
components.
Chapter 10, An End-to-End Example, has an end-to-end hands-on example that will help
you to recollect concepts introduced in different chapters and reassert their understanding.
Code will be pushed to a social repository as GitHub, but this chapter will give users
enough instructions to use it and run it.
What you need for this book
You need a Java-based IDE, and Spring STS is recommended. JDK 1.6 and above is
required.
Who this book is for
This book is for developers who are already familiar with basic Java and Spring concepts.
Concepts of Enterprise Integration Patterns would be helpful but not mandatory. The book
has been presented in a hands-on manner; an end-to-end working example has been
picked, implemented, and explained throughout the chapters. This book would serve as a
strong companion for new developers trying out their hand on integration aspects, and as a
hands-on guide on how to use Spring Integration components for developers already
familiar with these challenges and looking for quick samples.
Conventions
In this book, you will find a number of styles of text that distinguish between different
kinds of information. Here are some examples of these styles, and an explanation of their
meaning.
Code words in text, database table names, folder names, filenames, file extensions,
pathnames, dummy URLs, user input, and Twitter handles are shown as follows: “Create a
Spring Integration project by navigating to File | Spring Project, as shown in the
following screenshot:”.
A block of code is set as follows:
<int:channel id="resultPersistenceChannel">
<int:queue message-store="messageStore"/>
</int:channel>
When we wish to draw your attention to a particular part of a code block, the relevant
lines or items are set in bold:
public interface ChannelInterceptor {
Message<?> preSend(Message<?> message, MessageChannel channel);
void postSend(Message<?> message, MessageChannel channel, boolean sent);
boolean preReceive(MessageChannel channel);
Message<?> postReceive(Message<?> message, MessageChannel channel);
New terms and important words are shown in bold. Words that you see on the screen, in
menus or dialog boxes for example, appear in the text like this: “clicking the Next button
moves you to the next screen”.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this
book—what you liked or may have disliked. Reader feedback is important for us to
develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <feedback@packtpub.com>, and
mention the book title via the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or
contributing to a book, see our author guide on www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help
you to get the most from your purchase.
Random documents with unrelated
content Scribd suggests to you:
The Project Gutenberg eBook of The American
Missionary — Volume 36, No. 6, June, 1882
This ebook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this ebook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.
Author: Various
Language: English
Page.
EDITORIALS.
Paragraphs 161
Colored Journalism in the South 163
Kind of University Most Needed in the South. By
Prof. Horace Bumstead, Atlanta, Ga. 164
Benefactions 167
General Notes—Africa, Indians 167
Cut of Indian Medicine Man 169
THE FREEDMEN.
AFRICA.
THE CHINESE.
OBITUARY.
RECEIPTS 183
American Missionary Association,
56 READE STREET, NEW YORK
CORRESPONDING SECRETARY.
TREASURER.
DISTRICT SECRETARIES.
COMMUNICATIONS
relating to the work of the Association may be addressed to the Corresponding
Secretary; those relating to the collecting fields, to the District Secretaries; letters
for the Editor of the “American Missionary,” to Rev. G. D. Pike, D.D., at the New
York Office.
FORM OF A BEQUEST.
“I bequeath to my executor (or executors) the sum of —— dollars, in trust, to pay
the same in —— days after my decease to the person who, when the same is
payable, shall act as Treasurer of the ‘American Missionary Association’ of New
York City, to be applied, under the direction of the Executive Committee of the
Association, to its charitable uses and purposes.” The Will should be attested by
three witnesses.
The Annual Report of the A. M. A. contains the Constitution of the Association and
the By-Laws of the Executive Committee. A copy will be sent free on application.
THE
American Missionary.
Vol. XXXVI. JUNE, 1882.
No. 6.
American Missionary Association.
John F. Slater, Esq., of Norwich, Conn., has enrolled his name with
Peabody, Seney and others as the wise benefactors of mankind, by
the appropriation of a million of dollars for the education of the
colored people of America. This munificent fund he has entrusted to
the care of a Board of Trustees, made up of persons well known for
their patriotism and their philanthropy, and from whose honorable
character a wise administration of the trust may be expected. Mr.
Slater has not only shown his generosity in the gift, but his wisdom
as well in the broad and liberal instructions to his trustees. The letter
containing these directions is a model of wise forethought, guarding
against the limitations so often imposed on executors and trustees,
which, in changes of circumstances, often render the gift well-nigh
useless. This letter, we believe, will have a salutary influence on
other donors in this respect.
We have no means of knowing the benefit that may accrue to the
A. M. A. from the income of Mr. Slater’s benefaction, which will
probably amount to $50,000 or $60,000 per annum. We only know
that the Association has a large educational work among the people
whom Mr. Slater wishes to benefit, and we believe that the Board of
Trustees will wisely discriminate as to the amount to which we are
entitled. In any contingency, however, that amount will probably not
be so large as to release our friends from the responsibility of
continuing and even increasing their donations to meet the demands
of our constantly enlarging work.
Rev. Dr. Herrick Johnson, of Chicago, has made a manly and Christian
fight against theatres. A little volume of 82 pages, entitled “Plain
Talks about the Theatre,” embodies his views, and is entitled to a
candid reading.
ebookbell.com