text:
Related Reading
Java and XML
This excerpt is Chapter 12 from Java & XML, 2nd Edition, to be published in September 2001 by O'Reilly.
SOAP is the Simple Object Access Protocol. If you haven't heard of it by now, you've probably been living under a rock somewhere. It's become the newest craze in web programming, and is integral to the web services fanaticism that has taken hold of the latest generation of web development. If you've heard of .NET from Microsoft or the peer-to-peer "revolution," then you've heard about technologies that rely on SOAP (even if you don't know it). There's not one but two SOAP implementations going on over at Apache, and Microsoft has hundreds of pages on their MSDN website devoted to it (http://msdn.microsoft.com/).
In this chapter, I explain what SOAP is, and why it is such an important part of where the web development paradigm is moving. That will help you get the fundamentals down, and prepare you for actually working with a SOAP toolkit. From there, I briefly run over the SOAP projects currently available, and then delve into the Apache implementation. This chapter is not meant to be the complete picture on SOAP; the next chapter, Chapter 13, fills in lots of gaps. Take this as the first part of a miniseries; many of your questions at the end of this chapter will be answered in the next.
In this chapter:
Starting Out
Setting Up
Getting Dirty
Going Further
What's Next?
The first thing to do is get an understanding of what SOAP is. You can read through the complete W3C note submission, which is fairly lengthy, at http://www.w3.org/TR/SOAP. When you take away all of the hype, SOAP is just a protocol. It's a simple protocol (to use, not necessarily to write), based on the idea that at some point in a distributed architecture, you'll need to exchange information. Additionally, in a system that is probably overtaxed and process-heavy, this protocol is lightweight, requiring a minimal amount of overhead. Finally, it allows all this to occur over HTTP, which allows you to get around tricky issues like firewalls, as well as keep away from having all sorts of sockets listening on oddly-numbered ports. Once you get that down, everything else is just details.
Of course, I'm sure you're here for the details, so I won't leave them out. There are three basic components to the SOAP specification: the SOAP envelope, a set of encoding rules, and a means of interaction between request and response. Begin to think about a SOAP message as an actual letter; you know, those antiquated things in envelopes with postage and an address scrawled across the front? That analogy helps SOAP concepts like "envelope" make a lot more sense. Figure 12-1 seeks to illustrate the SOAP process in terms of this analog.
With this picture in your head, let's look at the three components of the SOAP specification. I cover each briefly and provide examples that illustrate these concepts more completely. Additionally, it's these three key components that make SOAP so important and valuable. Error handling, support for a variety of encodings, serialization of custom parameters, and the fact that SOAP runs over HTTP makes it more attractive in many cases than the other choices for a distributed protocol.
There's a lot of talk about running SOAP over other protocols, like SMTP (or even Jabber). This isn't part of the SOAP standard, but it may be added in the future. Don't be surprised if you see it discussed.
The SOAP envelope is analogous to the envelope of an actual letter. It supplies information about the message that is being encoded in a SOAP payload, including data relating to the recipient and sender, as well as details about the message itself. For example, the header of the SOAP envelope can specify exactly how a message must be processed. Before an application goes forward with processing a message, the application can determine information about a message, including whether it will even be able to process the message. Distinct from the situation with standard XML-RPC calls (remember that? XML-RPC messages, encoding, and the rest are all wrapped into a single XML fragment), with SOAP actual interpretation occurs in order to determine something about the message. A typical SOAP message can also include the encoding style, which assists the recipient in interpreting the message. Example 12-1 shows the SOAP envelope, complete with the specified encoding.
Example 12-1: The SOAP envelope
<article xmlns="http://www.ibm.com/developer">
You can see that an encoding is specified within the envelope,
allowing an application to determine (using the value of the
encodingStyle attribute) whether it can read the incoming
message situated within the
Body element. Be sure
to get the SOAP envelope namespace correct, or SOAP servers that receive your
message will trigger version mismatch errors, and you won't be able to
interoperate with them.
The second major element that SOAP brings to the table is a
simple means of encoding user-defined data types. In RPC (and XML-RPC),
encoding can only occur for a predefined set of datatypes: those that are
supported by whatever XML-RPC toolkit you download. Encoding other types
requires modifying the actual RPC server and clients themselves. With SOAP,
however, XML schemas can be used to easily specify new datatypes (using the
complexType structure discussed way back in Chapter
2), and those new types can be easily represented in XML as part of a SOAP
payload. Because of this integration with XML Schema, you can encode any
datatype in a SOAP message that you can logically describe in an XML
The best way to understand how SOAP invocation works is to compare it with something you already know, such as XML-RPC. If you recall, an XML-RPC call would look something like the code fragment shown in Example 12-2.
Example 12-2: Invocation in XML-RPC
// Specify the XML parser to use
// Specify the server to connect to
XmlRpcClient client =
new XmlRpcClient("http://rpc.middleearth.com");
// Create the parameters
Vector params = new Vector( );
// Request reservation
Boolean boughtTickets =
(Boolean)client.execute("ticketCounter.buyTickets", params);
// Deal with the response
I've coded up a simple ticket counter-style application. Now, look at Example 12-3, which shows the same call in SOAP.
Example 12-3: Invocation in SOAP
// Create the parameters
Vector params = new Vector( );
new Parameter("flightNumber", Integer.class, flightNumber, null));
new Parameter("numSeats", Integer.class, numSeats, null));
new Parameter("creditCardType", String.class, creditCardType, null));
new Parameter("creditCardNumber", Long.class, creditCardNum, null));
// Create the Call object
Call call = new Call( );
// Invoke
Response res = call.invoke(new URL("http://rpc.middleearth.com"), "");
// Deal with the response
As you can see, the actual invocation itself, represented by the
Call object, is resident in memory. It allows you
to set the target of the call, the method to invoke, the encoding style, the
parameters, and more not shown here. It is more flexible than the XML-RPC
methodology, allowing you to explicitly set the various parameters that are
determined implicitly in XML-RPC. You'll see quite a bit more about this
invocation process in the rest of the chapter, including how SOAP provides
fault responses, an error hierarchy, and of course the returned results from
the call.
With that brief introduction, you probably know enough to want to get on with the fun stuff. Let me show you the SOAP implementation I'm going to use, explain why I made that choice, and get to some code.
Now that you have some basic concepts down, it's time to get going on the fun part, the code. You need a project or product for use, which turns out to be simpler to find than you might think. If you want a Java-based project providing SOAP capability, you don't have to look that far. There are two groups of products out there: commercial and free. As in most of the rest of the book, I'm steering away from covering commercial products. This isn't because they are bad (on the contrary, some are wonderful); it's because I want every reader of this book to be able to use every example. That calls for accessibility, something commercial products don't provide; you have to pay to use them, or download them and at some point the trial period runs out.
That brings us to open source projects. In that realm, I see only one available: Apache SOAP. Located online at http://xml.apache.org/soap, this project seeks to provide a SOAP toolkit in Java. Currently in a 2.2 versioned release, you can download it from the Apache website. That's the version and project I use for the examples throughout this chapter.
Before moving on to the installation and setup of Apache SOAP, I will answer a few questions that might be rattling around in your head. It's probably clear why I'm not using a commercial product. However, you may be thinking of a couple of other open source or related options that you might want to use, and wondering why I am not covering those.
First on the list of options is IBM's SOAP implementation, IBM SOAP4J. IBM's work is actually the basis of the current Apache SOAP project, much as IBM XML4J fed into what is now the Apache Xerces XML parser project. Expect the IBM implementation to resurface, wrapping the Apache SOAP project's implementation. This is similar to what is happening with IBM's XML4J; it currently just provides IBM packaging over Xerces. This makes some additional levels of vendor-backing available to the open source version, although the two (Apache and IBM) projects are using the same codebase.
Yes. Without a doubt, Microsoft and their SOAP implementation, as well as the whole .NET initiative (covered more in the next chapter), are very important. In fact, I wanted to spend some time covering Microsoft's SOAP implementation in detail, but it only supports COM objects and the like, without Java support. For this reason, coverage of it doesn't belong in a book on Java and XML. However, Microsoft (despite the connotations we developers tend to have about the company) is doing important work in web services, and you'd be making a mistake in writing them off, at least in this particular regard. If you need to communicate with COM or Visual Basic components, I highly recommend checking out the Microsoft SOAP toolkit, found online along with a lot of other SOAP resources.
Those of you who monitor activity in Apache may have heard of Apache Axis. Axis is the next-generation SOAP toolkit, also being developed under the Apache XML umbrella. With SOAP (the specification, not a specific implementation) undergoing fairly fast and radical change these days, tracking it is difficult. Trying to build a version of SOAP that meets current requirements and moves with new development is also awfully tough. As a result, the current Apache SOAP offering is somewhat limited in its construction. Rather than try to rearchitect an existing toolkit, the Apache folks started fresh with a new codebase and project; thus, Axis was born. Additionally, the naming of SOAP was apparently going to change, from SOAP to XP and then to XMLP. As a result, the name of this new SOAP project was uncoupled from the specification name; thus, you have "Axis." Of course, now it looks like the W3C is going back to calling the specification SOAP (Version 1.2, or Version 2.0), so things are even more confusing!
Think of IBM SOAP4J as architecture 1 of the SOAP toolkit. Following that is Apache SOAP (covered in this chapter), which is architecture 2. Finally, Axis provides a next-generation architecture, architecture 3. This project is driven by SAX, while Apache SOAP is based upon DOM. Additionally, Axis provides a more user-friendly approach in header-interaction, something missing in Apache SOAP. With all of these improvements, you're probably wondering why I'm not covering Axis. It's simply too early. Axis is presently trying to get together a 0.51 release. It's not a beta, or even an alpha, really; it's very early on. While I'd love to cover all the new Axis features, there's no way your boss is going to let you put in a pre-alpha release of open source software in your mission-critical systems, now is there? As a result, I've chosen to focus on something you can use, today: Apache SOAP. I'm sure when Axis does finalize, I'll update this chapter in a subsequent revision of the book. Until then, let's focus on a solution you can use.
There are two forms of installation with regard to SOAP. The first is running a SOAP client, using the SOAP API to communicate with a server that can receive SOAP messages. The second is running a SOAP server, which can receive messages from a SOAP client. I cover installation of both cases in this section.
To use SOAP on a client, you first need to download Apache SOAP,
available online at http://xml.apache.org/dist/soap.
I've downloaded version 2.2, in the binary format (in the
subdirectory). You should then extract the contents of the archive into a
directory on your machine; my installation is in the
javaxml2 directory
c:\javaxml2 on my Windows machine,
/javaxml2 on my Mac OS X
machine). The result is
/javaxml2/soap-2_2. You'll also need to
download the JavaMail package, available from Sun at http://java.sun.com/products/javamail/.
This is for the SMTP transfer protocol support included in Apache SOAP. Then,
download the JavaBeans Activation Framework (JAF), also from Sun, available
online at http://java.sun.com/products/beans/glasgow/jaf.html.
I'm assuming that you still have Xerces or another XML parser available for
NOTE: Ensure your XML parser is JAXP-compatible and namespace-aware. Your parser, unless it's a very special case, probably meets both of these requirements. If you have problems, go back to using Xerces.
Use a recent version of Xerces; Version 1.4 or greater should suffice. There are a number of issues with SOAP and Xerces 1.3(.1), so I'd avoid that combination like the plague.
Expand both the JavaMail and JAF packages, and then add the
jar files to your classpath, as well as the
library. Each of these
jar files are either in the
root directory or in the
lib/ directory of the relevant installation. At the end, your classpath should look something like this:
$ echo $CLASSPATH
On Windows, it should look like:
c:\>echo %CLASSPATH%
Finally, add the
javaxml2/soap-2_2/ directory to your
classpath if you want to run the SOAP samples. I cover setup for specific
examples in this chapter as I get to them.
For building a SOAP-capable set of server components, you first
need a servlet engine. As in earlier chapters, I'll use Apache Tomcat
throughout this chapter for examples, which is available from http://jakarta.apache.org/. You'll then
need to add everything needed on the client to the server's classpath. The
easiest way to do that is to drop
activation.jar, and
mail.jar, as well as your parser, in your servlet engine's library
directory. On Tomcat, this is simply the
lib/ directory, which contains
libraries that should be autoloaded. If you want to support scripting (which
is not covered in this chapter, but is in the Apache SOAP samples), you'll
also need to put
bsf.jar, available online at http://oss.software.ibm.com/developerworks/projects/bsf,
js.jar, available from http://www.mozilla.org/rhino/, in the
same directory.
NOTE: If you are using Xerces with Tomcat, you'll need to perform the same renaming trick I talked about in Chapter 10. Rename
z_jaxp.jar, to ensure that
xerces.jarand the included version of JAXP is loaded prior to any other parser or JAXP implementation.
Now restart your servlet engine, and you're ready to write SOAP server components.
In addition to basic operation, Apache SOAP includes a router servlet as well as an admin client; even if you don't want to use these, I recommend you install them so you can test your SOAP installation. This process is servlet-engine-specific, so I just cover the Tomcat installation here. However, installation instructions for several other servlet engines are available online at http://xml.apache.org/soap/docs/index.html.
Installation under Tomcat is a piece of cake; you simply need to
take the
soap.war file located in the
directory, and drop it in your
$TOMCAT_HOME/webapps directory. That's it! To test
the installation, point your web browser to http://localhost:8080/soap/servlet/rpcrouter. You should get a response like that shown in Figure 12-2.
Although this looks like an error, it does indicate that things are working correctly. You should get the same response pointing your browser to the admin client, at http://localhost:8080/soap/servlet/messagerouter.
As a final test of both the server and client, ensure you have followed all the setup instructions so far. Then execute the following Java class as shown, supplying your servlet URL for the RPC router servlet:
C:\>java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter list Deployed Services:
You should get the empty list of services, as shown here. If you get any other message, consult the long list of possible errors at http://xml.apache.org/soap/docs/trouble/index.html. A fairly complete list of problems that you can run into is there. If you do get the empty list of services, then you're set up and ready to continue with the examples in the rest of this chapter.
There are three basic steps in writing any SOAP-based system, and I'll look at each in turn:
The first step is to decide if you want to use SOAP for RPC-style calls, in which a remote procedure is invoked on a server, or for messaging, in which a client simply sends pieces of information to a server. I'll detail these processes in the next section. Once you've made that design decision, you'll need to access, or code up, a service. Of course, since we're all Java pros here, this chapter shows you how to code up your own. Finally, you'll need to write the client for this service, and watch things take off.
Your first task is actually not code-related but design-related. You need to determine if you want an RPC service or a messaging one. The first, RPC, is something you should be pretty familiar with after the last chapter. A client invokes a remote procedure on a server somewhere, and then gets some sort of response. In this scenario, SOAP is simply acting as a more extensible XML-RPC system, allowing better error handling and passing of complex types across the network. This is a concept you should already understand, and because it turns out that RPC systems are simple to write in SOAP, I'll start off there. This chapter describes how to write an RPC service, and then an RPC client, and put the system in action.
The second style of SOAP processing is message-based. Instead of invoking remote procedures, it provides for transfer of information. As you can imagine, this is pretty powerful, and doesn't depend on a client knowing about a particular method on some server. It also models distributed systems more closely, allowing packets of data (packet in the figurative sense, not in the network sense) to be passed around, keeping various systems aware of what other systems are doing. It is also more complicated than the simpler RPC-style programming, so I'll cover it in the next chapter with other business-to-business details, after you're well grounded in SOAP-RPC programming.
The actual process of making this decision is left up to you, like most design issues. Look at your application and determine exactly what you want SOAP to do for you. If you have a server and a set of clients that just need to perform tasks remotely, then RPC is probably going to be well-suited for your needs. However, in larger systems that are exchanging data rather than performing specific business functions on request, SOAP's messaging capabilities may be a better match.
With the formalities out of the way, it's time to get going, fast and furious. As you'll recall from the last chapter, in RPC you need a class that is going to have its methods invoked remotely.
I'll start by showing you some code artifacts to have available on the server. These artifacts are classes with methods that are exposed to RPC clients.
You can also use scripts through the Bean Scripting Framework, but for the sake of space I won't cover that here. Check out the upcoming O'Reilly SOAP book, as well as the online documentation at http://xml.apache.org/soap, for more details on script support in SOAP.
amazon.com style application might use. I'm introducing a basic version here, and will add to that later in the chapter as well.
Example 12-4: The CDCatalog class
package javaxml2;
import java.util.Hashtable;
public class CDCatalog {
/** The CDs, by title */
private Hashtable catalog;
public CDCatalog( ) {
catalog = new Hashtable( );
// Seed the catalog
catalog.put("Nickel Creek", "Nickel Creek");
catalog.put("Let it Fall", "Sean Watkins");
catalog.put("Aerial Boundaries", "Michael Hedges");
catalog.put("Taproot", "Michael Hedges");
public void addCD(String title, String artist) {
if ((title == null) || (artist == null)) {
throw new IllegalArgumentException("Title and artist cannot be null.");
catalog.put(title, artist);
public String getArtist(String title) {
if (title == null) {
throw new IllegalArgumentException("Title cannot be null.");
// Return the requested CD
return (String)catalog.get(title);
public Hashtable list( ) {
return catalog;
This allows adding a new CD, searching for an artist by a CD
title, and getting all current CDs. Take note that the
list( ) method returns a
Hashtable, and there is nothing special I have to do to make that work; Apache SOAP provides automatic mapping of the
Hashtable Java type, much as XML-RPC did.
Compile this class, and make sure you've got everything typed in
(or downloaded, if you choose) correctly. Notice that the
CDCatalog class has no knowledge about SOAP. This means
you can take your existing Java classes and expose them through SOAP-RPC,
which reduces the work required on your end to move to a SOAP-based
architecture if needed.
With the Java coding done, you now need to define a deployment descriptor. This specifies several key things to a SOAP server:
The first is similar to a URL, and required for a client to connect to any SOAP server. The second is exactly what you expect: a list of methods letting the client know what are allowable artifacts for a SOAP client. It also lets the SOAP server, which I'll cover in a moment, know what requests to accept. And the third is a means of letting the SOAP server know how to handle any custom parameters; I'll come back to this in the next section when I add some more complex behavior to the catalog.
I'll show you the deployment descriptor and detail each item
within it. Example 12-5 is the deployment descriptor for the
CDCatalog service we're creating.
Example 12-5: The CDCatalog deployment descriptor
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
<isd:provider type="java"
methods="addCD getArtist list"
<isd:java class="javaxml2.CDCatalog" static="false" />
First, I referenced the Apache SOAP deployment namespace, and
then supplied a URN for my service through the
attribute. This should be something unique across services, and descriptive of
the service. I showed about as much originality in naming the service as Dave
Matthews did with his band, but it gets the job done. Then, I specified
through the
java element the class to expose,
including its package name (through the
attribute), and indicated that the methods being exposed were not static ones
(through the
static attribute).
Next, I've specified a fault listener implementation to use.
Apache's SOAP implementation provides two; I've used the first,
DOMFaultListener. This listener returns any exception and
fault information through an additional DOM element in the response to the
client. I'll get back to this when I look at writing clients, so don't worry
too much about it right now. The other fault listener implementation is
org.apache.soap.server.ExceptionFaultListener. This
listener exposes any faults through an additional parameter returned to the
client. Since quite a few SOAP-based applications are already going to be
working in Java and XML APIs like DOM, it's common to use the
DOMFaultListener in most cases.
At this point, you've got a working deployment descriptor and a set of code artifacts to expose, and you can deploy your service. Apache SOAP comes with a utility to do this task, provided you have done the setup work. First, you need a deployment descriptor for your service, which I just talked about. Second, you need to make the classes for your service available to the SOAP server. The best way to do this is to jar up the service class from the last section:
jar cvf javaxml2.jar javaxml2/CDCatalog.class
Take this
jar file and drop it into your
lib/ directory (or wherever libraries are auto-loaded for your servlet engine), and restart your
servlet engine.
WARNING: When you do this, you have created a snapshot of your class file. Changing the code in the
CDCatalog.javafile and recompiling it will not cause the servlet engine to pick up the changes. You'll need to re-jar the archive and copy it over to your
lib/directory each time code changes are made to ensure your service is updated. You'll also want to restart your servlet engine to make sure the changes are picked up by the engine as well.
With your service class (or classes) accessible by your SOAP
server, you can now deploy the service, using Apache SOAP's
org.apache.soap.server.ServiceManager utility class:
C:\javaxml2\Ch12>java org.apache.soap.server.ServiceManagerClient
http://localhost:8080/soap/servlet/rpcrouter deploy xml\CDCatalogDD.xml
The first argument is the SOAP server and RPC router servlet, the second is the action to take, and the third is the relevant deployment descriptor. Once this has executed, verify your service was added:
(gandalf)/javaxml2/Ch12$ java org.apache.soap.server.ServiceManagerClient
http://localhost:8080/soap/servlet/rpcrouter list
Deployed Services:
At a minimum, this should show any and all services you have available on the server. Finally, you can easily undeploy the service, as long as you know its name:
C:\javaxml2\Ch12>java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter undeploy urn:cd-catalog
Every time you update your service code, you must undeploy and then redeploy to ensure the SOAP server is running the newest copy.
Next up is the client. I'm going to keep things simple, and just write a couple of command-line programs that invoke SOAP-RPC. It would be impossible to try and guess your business case, so I just focus on the SOAP details and let you work out integration with your existing software. Once you have the business portion of your code working, there are some basic steps you'll take in every SOAP-RPC call:
That may seem like a lot, but most of the operations are one- or
two-line method invocations. In other words, talking to a SOAP service is
generally a piece of cake. Example 12-6 shows the code for the
CDAdder class, which allows you to add a new CD to the catalog. Take a look at the code, and then I'll walk you through the juicy bits.
Example 12-6: The CDAdder class
package javaxml2;
import java.net.URL;
import java.util.Vector;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.SOAPException;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
public class CDAdder {
public void add(URL url, String title, String artist)
throws SOAPException {
System.out.println("Adding CD titled '" + title + "' by '" +
artist + "'");
// Build the Call object
Call call = new Call( );
// Set up parameters
Vector params = new Vector( );
params.addElement(new Parameter("title", String.class, title, null));
params.addElement(new Parameter("artist", String.class, artist, null));
// Invoke the call
Response response;
response = call.invoke(url, "");
if (!response.generatedFault( )) {
System.out.println("Successful CD Addition.");
} else {
Fault fault = response.getFault( );
System.out.println("Error encountered: " + fault.getFaultString( ));
public static void main(String[] args) {
if (args.length != 3) {
System.out.println("Usage: java javaxml2.CDAdder [SOAP server URL] " +
"\"[CD Title]\" \"[Artist Name]\"");
try {
// URL for SOAP server to connect to
URL url = new URL(args[0]);
// Get values for new CD
String title = args[1];
String artist = args[2];
// Add the CD
CDAdder adder = new CDAdder( );
adder.add(url, title, artist);
} catch (Exception e) {
e.printStackTrace( );
This program captures the URL of the SOAP server to connect to,
as well as information needed to create and add a new CD to the catalog. Then,
in the
add( ) method, the code creates the SOAP
Call object, on which all the interesting
interaction occurs. The target URI of the SOAP service and the method to
invoke are set on the call, both of which match up to values from the
service's deployment descriptor, from Example
12-5. Next, the encoding is set, which should always be the constant
Constants.NS_URI_SOAP_ENC unless you have very unique
encoding needs.
It creates a new
Vector populated
with SOAP Parameter objects. Each of these represents a parameter to the
specified method, and since the
addCD( ) method
takes two String values, this is pretty simple. Supply the name of the
parameter (for use in the XML and debugging), the class for the parameter, and
the value. The fourth argument is an optional encoding, if a single parameter
needs a special encoding. For no special treatment, the value
null suffices. The resulting
Vector is then added to the
Call object.
Once your call is set up, use the
invoke( ) method on that object. The return value from this method is an
org.apache.soap.Response instance, which is queried for
any problems that resulted. This is fairly self-explanatory, so I'll leave it
to you to walk through the code. Once you've compiled your client, and
followed the instructions earlier in this chapter for setting up your
classpath, run the sample as follows:
C:\javaxml2\build>java javaxml2.CDAdder
http://localhost:8080/soap/servlet/rpcrouter "Riding the Midnight Train" "Doc Watson"
Adding CD titled 'Riding the Midnight Train' by 'Doc Watson'
Successful CD Addition
Example 12-7 is another simple class,
CDLister, which lists all current CDs in the catalog. I won't go into detail on it, as it's very similar to Example 12-6, and is mainly reinforcement of what I've already talked about.
Example 12-7: The CDLister class
package javaxml2;
import java.net.URL;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.SOAPException;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
public class CDLister {
public void list(URL url) throws SOAPException {
System.out.println("Listing current CD catalog.");
// Build the Call object
Call call = new Call( );
// No parameters needed
// Invoke the call
Response response;
response = call.invoke(url, "");
if (!response.generatedFault( )) {
Parameter returnValue = response.getReturnValue( );
Hashtable catalog = (Hashtable)returnValue.getValue( );
Enumeration e = catalog.keys( );
while (e.hasMoreElements( )) {
String title = (String)e.nextElement( );
String artist = (String)catalog.get(title);
System.out.println(" '" + title + "' by " + artist);
} else {
Fault fault = response.getFault( );
System.out.println("Error encountered: " + fault.getFaultString( ));
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Usage: java javaxml2.CDAdder [SOAP server URL]");
try {
// URL for SOAP server to connect to
URL url = new URL(args[0]);
// List the current CDs
CDLister lister = new CDLister( );
} catch (Exception e) {
e.printStackTrace( );
The only difference in this method from the
CDAdder class is that the
Response object has a return value (the
Hashtable from the
list( ) method). This is returned as a
Parameter object, which allows a client to check its encoding and then extract the actual method
return value. Once that's done, the client can use the returned value like any
other Java object, and in the example simply runs through the CD catalog and
prints out each one. You can now run this additional client to see it in
C:\javaxml2\build>java javaxml2.CDLister
Listing current CD catalog.
'Riding the Midnight Train' by Doc Watson
'Taproot' by Michael Hedges
'Nickel Creek' by Nickel Creek
'Let it Fall' by Sean Watkins
'Aerial Boundaries' by Michael Hedges
That's really all there is to basic RPC functionality in SOAP. I'd like to push on a bit, though, and talk about a few more complex topics.
Although you can now do everything in SOAP you knew how to do in XML-RPC, there is a lot more to SOAP. As I said in the beginning of the chapter, two important things that SOAP brings to the table are the ability to use custom parameters with a minimal amount of effort, and more advanced fault handling. In this section, I cover both of these topics.
The most limiting thing with the CD catalog, at least at this
point, is that it only stores the title and artist for a given CD. It is much
more realistic to have an object (or set of objects) that represent a CD with
the title, artist, label, track listings, perhaps a genre, and all sorts of
other information. I'm not going to build this entire structure, but will move
from a title and artist to a
CD object with a
title, artist, and label. This object needs to be passed from the client to
the server and back, and demonstrates how SOAP can handle these custom types.
Example 12-8 shows this new class.
Example 12-8: The CD class
package javaxml2;
public class CD {
/** The title of the CD */
private String title;
/** The artist performing on the CD */
private String artist;
/** The label of the CD */
private String label;
public CD( ) {
// Default constructor
public CD(String title, String artist, String label) {
this.title = title;
this.artist = artist;
this.label = label;
public String getTitle( ) {
return title;
public void setTitle(String title) {
this.title = title;
public String getArtist( ) {
return artist;
public void setArtist(String artist) {
this.artist = artist;
public String getLabel( ) {
return label;
public void setLabel(String label) {
this.label = label;
public String toString( ) {
return "'" + title + "' by " + artist + ", on " +
This requires a whole slew of changes to the
CDCatalog class as well. Example 12-9 shows a modified version of this class with the changes that use the new
CD support class highlighted.
Example 12-9: An updated CDCatalog class
package javaxml2;
import java.util.Hashtable;
public class CDCatalog {
/** The CDs, by title */
private Hashtable catalog;
public CDCatalog( ) {
catalog = new Hashtable( );
// Seed the catalog
addCD(new CD("Nickel Creek", "Nickel Creek", "Sugar Hill"));
addCD(new CD("Let it Fall", "Sean Watkins", "Sugar Hill"));
addCD(new CD("Aerial Boundaries", "Michael Hedges", "Windham Hill"));
addCD(new CD("Taproot", "Michael Hedges", "Windham Hill"));
public void addCD(CD cd) {
if (cd == null) {
throw new IllegalArgumentException("The CD object cannot be null.");
catalog.put(cd.getTitle( ), cd);
public CD getCD(String title) {
if (title == null) {
throw new IllegalArgumentException("Title cannot be null.");
// Return the requested CD
return (CD)catalog.get(title);
public Hashtable list( ) {
return catalog;
Other than the obvious changes, I've also updated the old
getArtist(String title) method to
getCD(String title), and made the return value a
CD object. This means that the SOAP server will need to be able to serialize and desirialize this new class, and the client will be updated. First, I look at an updating deployment descriptor that
details the serialization issues related to this custom type. Add the
following lines to the deployment descriptor for the CD catalog, as well as
changing the available method names to match the updated
CDCatalog class:
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
<isd:provider type="java"
methods="addCD getCD list"
<isd:java class="javaxml2.CDCatalog" static="false" />
<isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="urn:cd-catalog-demo" qname="x:cd"
The new element,
mappings, specifies
how a SOAP server should handle custom parameters such as the
CD class. First, define a
map element for each custom parameter type. For the
encodingStyle attribute, at least as of Apache SOAP 2.2,
you should always supply the value http://schemas.xmlsoap.org/soap/encoding/, the only encoding currently supported. You need to supply a namespace for the custom type and then the name of the class, with this namespace prefix, for the type. In my case, I used a "dummy" namespace and the simple prefix "x" for this purpose. Then, using the
javaType attribute,
supply the actual Java class name:
javaxml2.CD in
this case. Finally, the magic occurs in the
java2XMLClassName and
xml2JavaClassName attributes. These specify a class to
convert from Java to XML and from XML to Java, respectively. I've used the
incredibly handy
BeanSerializer class, also
provided with Apache SOAP. If your custom parameter is in a JavaBean format,
this serializer and deserializer will save you from having to write your own.
You need to have a class with a default constructor (remember that I defined
an empty, no-args constructor within the
CD class),
and expose all the data in that class through
setXXX and
getXXX style methods. Since the
CD class fits the bill here, the
BeanSerializer works perfectly.
NOTE: It's no accident that the
CDclass follows the JavaBean conventions. Most data classes fit easily into this format, and I knew I wanted to avoid writing my own custom serializer and deserializer. These are a pain to write (not overly difficult, but easy to mess up), and I would go to great lengths to try and use the Bean conventions in your own custom parameters. In many cases, the Bean conventions only require that a default constructor (with no arguments) is present in your class.
Now recreate your service
jar file. Then, redeploy your service:
(gandalf)/javaxml2/Ch12$ java
http://localhost:8080/soap/servlet/rpcrouter xml/CDCatalogDD.xml
WARNING: If you have kept your servlet engine running and the service deployed all this time, you'll need to restart the servlet engine to get the new classes for the SOAP service active, and redeploy the service.
At this point, all that is left is modifying the client to use the new class and methods. Example 12-10 is an updated version of the client class
CDAdder. The changes from the previous version of the
class are highlighted.
Example 12-10: The updated CDAdder class
package javaxml2;
import java.net.URL;
import java.util.Vector;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.SOAPException;
import org.apache.soap.encoding.SOAPMappingRegistry;
import org.apache.soap.encoding.soapenc.BeanSerializer;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
import org.apache.soap.util.xml.QName;
public class CDAdder {
public void add(URL url, String title, String artist, String label)
throws SOAPException {
System.out.println("Adding CD titled '" + title + "' by '" +
artist + "', on the label " + label);
CD cd = new CD(title, artist, label);
// Map this type so SOAP can use it
SOAPMappingRegistry registry = new SOAPMappingRegistry( );
BeanSerializer serializer = new BeanSerializer( );
new QName("urn:cd-catalog-demo", "cd"),
CD.class, serializer, serializer);
// Build the Call object
Call call = new Call( );
// Set up parameters
Vector params = new Vector( );
params.addElement(new Parameter("cd", CD.class, cd, null));
// Invoke the call
Response response;
response = call.invoke(url, "");
if (!response.generatedFault( )) {
System.out.println("Successful CD Addition.");
} else {
Fault fault = response.getFault( );
System.out.println("Error encountered: " + fault.getFaultString( ));
public static void main(String[] args) {
if (args.length != 4) {
System.out.println("Usage: java javaxml2.CDAdder [SOAP server URL] " +
"\"[CD Title]\" \"[Artist Name]\" \"[CD Label]\"");
try {
// URL for SOAP server to connect to
URL url = new URL(args[0]);
// Get values for new CD
String title = args[1];
String artist = args[2];
String label = args[3];
// Add the CD
CDAdder adder = new CDAdder( );
adder.add(url, title, artist, label);
} catch (Exception e) {
e.printStackTrace( );
The only really interesting change is in dealing with the mapping of the
CD class:
// Map this type so SOAP can use it
SOAPMappingRegistry registry = new SOAPMappingRegistry( );
BeanSerializer serializer = new BeanSerializer( );
new QName("urn:cd-catalog-demo", "cd"),
CD.class, serializer, serializer);
This is how a custom parameter can be encoded and sent across
the wire. I already discussed how the
BeanSerializer class could be used to handle parameters in the JavaBean format, such as the
CD class. To specify that to the server, I used the deployment descriptor; however, now I need to let the client know to use this serializer and deserializer. This is what the
SOAPMappingRegistry class allows. The
mapTypes( ) method takes in an encoding string
(again, using the constant
NS_URI_SOAP_ENC is the
best idea here), and information about the parameter type a special
serialization should be used for. First, a
QName is
supplied. This is why the odd namespacing was used back in the deployment
descriptor; you need to specify the same URN here, as well as the local name
of the element (in this case "CD"), then the Java
Class object of the class to be serialized (
CD.class), and finally the class instance for serialization and deserialization. In the case of the
BeanSerializer, the same instance works for both. Once
all this is set up in the registry, let the
object know about it through the
) method.
You can run this class just as before, adding the CD label, and things should work smoothly:
C:\javaxml2\build>java javaxml2.CDAdder
"Tony Rice" "Manzanita" "Sugar Hill"
Adding CD titled 'Tony Rice' by 'Manzanita', on the label Sugar Hill
Successful CD Addition.
I'll leave it up to you to modify the
CDLister class in the same fashion, and the downloadable samples have this updated class as well.
You might think that since the
CDListerclass doesn't deal directly with a
CDobject (the return value of the
list( )method was a
Hashtable), you don't need to make any changes. However, the returned
Hashtablecontains instances of CD objects. If SOAP doesn't know how to deserialize these, your client is going to give you an error. Therefore, you must specify a
SOAPMappingRegistryinstance on the
Callobject to make things work.
Now that you're tossing around custom objects, making RPC calls,
and generally showing up everyone else in the office, let me talk about a less
exciting topic: error handling. In any network transaction, many things can go
wrong. The service isn't running, an error occurs on the server, objects can't
be found, classes are missing, or a whole lot of other problems. Until now, I
just used the
fault.getString( ) method to report
errors. However, this method isn't always very helpful. To see it in action,
comment out the following line in the
public CDCatalog( ) {
//catalog = new Hashtable( );
// Seed the catalog
addCD(new CD("Nickel Creek", "Nickel Creek", "Sugar Hill"));
addCD(new CD("Let it Fall", "Sean Watkins", "Sugar Hill"));
addCD(new CD("Aerial Boundaries", "Michael Hedges", "Windham Hill"));
addCD(new CD("Taproot", "Michael Hedges", "Windham Hill"));
Recompile, restart your server engine, and redeploy. The result is that a
NullPointerException occurs when the class constructor tries to add a CD to an uninitialized
Hashtable. Running the client will let you know an error has occurred, but not in a very meaningful way:
(gandalf)/javaxml2/build$ java javaxml2.CDLister
Listing current CD catalog.
Error encountered: Unable to resolve target object: null
This isn't exactly the type of information you need to track
down the problem. However, the framework is in place to do a better job of
error handling; remember the
DOMFaultListener you
specified as the value of the
element? This is where it comes into play. The returned
Fault object in the case of a problem (as in this one) contains a DOM
org.w3c.dom.Element with detailed error information. First, add an import statement for
java.util.Iterator to your client source code:
import java.net.URL;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.SOAPException;
import org.apache.soap.encoding.SOAPMappingRegistry;
import org.apache.soap.encoding.soapenc.BeanSerializer;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
import org.apache.soap.util.xml.QName;
Next, make the following change to how errors are handled in the
list( ) method:
if (!response.generatedFault( )) {
Parameter returnValue = response.getReturnValue( );
Hashtable catalog = (Hashtable)returnValue.getValue( );
Enumeration e = catalog.keys( );
while (e.hasMoreElements( )) {
String title = (String)e.nextElement( );
CD cd = (CD)catalog.get(title);
System.out.println(" '" + cd.getTitle( ) + "' by " + cd.getArtist( ) +
" on the label " + cd.getLabel( ));
} else {
Fault fault = response.getFault( );
System.out.println("Error encountered: " + fault.getFaultString( ));
Vector entries = fault.getDetailEntries( );
for (Iterator i = entries.iterator(); i.hasNext( ); ) {
org.w3c.dom.Element entry = (org.w3c.dom.Element)i.next( );
System.out.println(entry.getFirstChild().getNodeValue( ));
By using the
getDetailEntries( )
method, you get access to the raw data supplied by the SOAP service and server
about the problem. The code iterates through these (there is generally only a
single element, but it pays to be careful), and grabs the DOM
Element contained within each entry. Essentially, here's
the XML you are working through:
<faultstring>Unable to resolve target object: null</faultstring>
<stacktrace>Here's what we want!</stackTrace>
In other words, the
Fault object
gives you access to the portion of the SOAP envelope that deals with errors.
Additionally, Apache SOAP provides a Java stack trace if errors occur, and
that provides the detailed information needed to troubleshoot problems. By
grabbing the
stackTrace element and printing the
Text node's value from that
Element, your client will now print out the stack trace from the server. Compile these changes, and rerun the client. You should get the following output:
C:\javaxml2\build>java javaxml2.CDLister http://localhost:8080/soap/servlet/rpcr
Listing current CD catalog.
Error encountered: Unable to resolve target object: null
at javaxml2.CDCatalog.addCD(CDCatalog.java:24)
at javaxml2.CDCatalog.<init>(CDCatalog.java:14)
at java.lang.Class.newInstance0(Native Method)
at java.lang.Class.newInstance(Class.java:237)
This goes on for a bit, but you can see the juicy bits of
information indicating that a
occurred, and even get the line numbers on the server classes where the
problems happened. The result of this fairly minor change is a much more
robust means of handling errors. That should prepare you for tracking down
bugs on your server classes. Oh, and be sure to change your
CDCatalog class back to a version that won't cause these
errors before moving on!
The next chapter is a direct continuation of these topics. More than ever, XML is becoming the cornerstone of business-to-business activity, and SOAP is key to that. In the next chapter, I'll introduce two important technologies to you, UDDI and WSDL. If you have no idea what those are, you're in the right place. You'll learn how they all fit together to form the backbone of web services architectures. Get ready to finally find out what the web services, peer-to-peer craze is all about.
Return to ONJava.com.
Copyright © 2009 O'Reilly Media, Inc.


text: My baby girl is 4 months old (yeah!!). Today was our first offical hot day since she was born...we were outside playing and walking (in between naps of course) and she seemed more thirsty (hungry??) then usual. All I could figure is the heat. Can I give her water if I think she is thirsty? I mean, she has to be thirsty doesn't she??? I can't imagine breast milk is thirst quenshing(sp?)

subset: commoncrawl


text:
We've told you about the creepy ways in which animals are thinking like us, organizing like us and even driving vehicles like us ... but we know what you've been really wondering all along: Are there also disturbing ways in which their sex lives resemble ours?
The answer is yes, unfortunately. Also, you're a pervert.
6Spiders Give Back Rubs
The back rub is a strategic tool that allows you to initiate a sexual encounter with your partner without actually having to say the words "Hey, let's bone" (like dogs do, we assume). It's a win-win situation for everyone involved: The girl gets a scientifically proven relaxing treatment that can even cure some actual medical problems, while the dude greatly increases his chances of touching boobie later that night.
Thankfully the incidence rate of a female human devouring her lover is fairly low.
But it's only because we're so evolved and civilized that we've arrived at this ritual, right? Nope -- spiders do it, too. According to researchers, there are a few species of spider that have been observed massaging the backs of their partners before mating. Here's some footage of it, presumably taken from a hidden camera placed by the male spider himself.
C. Frank Stramer
If you feel this little guy crawling up your neck, don't worry, it just wants to fuck you.
One of the species that does this is the golden orb-weaver spider, where the male is so small compared to the female that he can actually climb all the way on top of her before putting silk on her back and spreading it around in massage motions. This might sound extremely romantic to you, but it has nothing to do with romance: It's all about survival.
Like we said, the female is way bigger than the male -- this means he has a lot to grab on to, but it also means that if she isn't in the mood for playing around or simply doesn't like the way he's doing it, she will eat him. Um, literally.
Dr. Raju Kasambe
We can't tell if he's being eaten or if she just pooped him. Either way, ouch.
So the massages are the male spider's way to make sure the female is as relaxed as possible before even attempting to bump uglies. Sex is dangerous business for these little dudes, but they don't even consider not doing it because, you know ... sex, you guys.
5Birds Scare Their Mates to Get Them All Hot and Bothered
The moment scary movies started being played was the moment a teenager brought a date to the theater in the hopes of scaring the shit out of her and making out. From Frankenstein to The Human Centipede, the same basic principle holds true: If you wait until she's all afraid and vulnerable, your chances of getting some action go up considerably. Everyone knows that, and that's the only reason Nightmare on Elm Street movies are still being made.
The latest one was just a series of audio cues on a blank screen, but nobody noticed.
But humans aren't the only ones that take advantage of this effect: Birds are doing the same thing. The splendid fairy-wren, a species from Australia, has basically figured out how to mount the equivalent of a horror movie show in the middle of the forest.
You see, when the male wren hears the call of its predator, the butcherbird (we assume the food chain order is determined exclusively by how badass their names are), they use a special call that, until recently, researchers couldn't figure out the purpose of. Why would the wren intentionally risk giving up its position when its predator is around? The answer, of course, is to get laid.
Nevil Lazarus
With a name like "splendid fairy-wren," it needs all the help it can get.
A group of investigators from the University of Chicago proved that female wrens are much more attentive to the male's song when it comes right after the predator's call, as opposed to when there's no danger around. It's like yelling "FIRE" in a crowded theater and taking advantage of the fact that everyone's paying attention to cut in and quickly say what you have to say (in this case, "I'll be right here if anyone wants some sex"). Or actually, since the predators that the birds are dealing with are real, it's like starting an actual fire in a theater and then pointing at your crotch as people run for the exit.
It doesn't work. Just take our word for it.
There's more. The researchers also found that the age or health of the bird made no difference whatsoever: All male wrens were as likely to use the special call, even if they stood absolutely no chances against the butcherbird. According to the experts, this could mean that the wren only places the call when it knows that the butcherbird is not out hunting, just strolling about. Nobody's in any real danger, but just the fact that a predator is close presumably gets the female wrens' blood pumping ... and that's when the male nonchalantly stretches his arm over to her seat and tries to grope some sideboob.


text:
Background: IU Home Pages, a bi-weekly newspaper
for faculty and staff on the eight campuses of Indiana University,
begins its sixth year of publication on line and in print with the
2001-2002 fall semester. Some editorial and photographic coverage
is provided by Media Relations, External Relations and Community
Relations staffs on all campuses.
IU Home Pages was launched the fall semester of 1996 by
IU's Office of Public Affairs and Government Relations and replaced
the former IU Newspaper. Home Pages is distributed to 17,000
employees of the university in print form and is read on line by
approximately 10,000 readers a month.
Location: IU Home Pages is headquartered at the
Poplars 721, 400 East Seventh St., Bloomington, IN 47405. Telephone:
812-855-6494 or 812-855-3911 Fax: 812-855-7984
E-mail IU Home Pages
IU Home Pages on line
Last updated: September 29, 2000
Comments: email@example.com
Copyright 2000, The
Trustees of Indiana University


text:
Dordt College News
NAIA Track Championships Results/Schedule
February 28, 2013
This is the schedule of events at the NAIA National Indoor Championships featuring Dordt College entrants:
Thursday, February 28
Noon-women's pentathlon (Briana Vander Woude) finished 1st with 3,751 points. National Champion!
3:00-women's 5,000 meters prelim (Lauren Opp) finished 6th in her heat in 18:03.99 and qualifies for finals on Saturday.
4:30-women's 4 x 800 semifinal. Finished 12th in the prelims with a time of 9:26.34 (Merissa Harkema, Renee Buikema, Kayla Byl, Lillie Koerner). Will not qualify for finals.
5:30-women's 4 x 400 semifinal. Finished 12th in 3:57.32 (Siera Wilgenburg, Tara Postma, Marisa Broersma, Katie Bonnema). Will not qualify for finals.
6:00-men's 4 x 400 semifinal Did not finish
6:30-women's Distance Medley Semifinal. Finished 11th in 12:28.10 (Abby De Vries, Jasmin Schelhaas, Renee Buikema, Merissa Harkema
Friday, March 1
Noon-women's 60 meter hurdles prelim (Briana Vander Woude). Ran an :08.89 to qualify for semifinals. 8th fastest time in prelims.
12:20-men's 60 meter hurdles prelim (Erin Francis). Ran an :08.37. 19th in prelims. Does not advance to semifinals.
1:00-women's Long Jump (Briana Vander Woude)Jumped 16-10.5 and placed 16th.
1:05-women's Mile prelim (Merissa Harkema) The prelims were not run because of number of competitors. Finals will be run on Saturday.
1:35-women's 60 meter hurdles semifinal. Vander Woude ran an :08.94 which was 11th in the semifinals and will not advance to finals.
2:25-women's 600 meters semifinal (Katie Bonnema) Ran a 1:32.30. Qualifies for the finals on Saturday and has the fastest time out of the semifinal heats.
3:30-men's 800 meters semifinal (Ryan Tholen). Ryan will not run because of injury in the 4 x 400 meter relay on Thursday.
5:25-men's 200 meters prelim (Jake Floen). Ran 22.16 an finished 9th in the prelims. Did not make finals...missed finals by :00.20 seconds.
Saturday, March 2
9:00-women's triple jump (Christy Sikkema). Jumped 36-00 and finished 15th.
11:25-women's mile final (Merissa Harkema). Ran 5:12.99 and finished 10th.
12:05-women's 600 meters final (Katie Bonnema). Ran a 1:31.52 to win the national title.
12:30-women's high jump (Briana Vander Woude). Cleared 5-5 to tie for 5th place.
1:45-women's 5,000 meters final (Lauren Opp). Ran a 17:53.10 to finish 8th.
Media Access: Download Word Version | High Resolution Image: 1


text:
Barber has seven, three of which that had been born in the last 30 days.
But, he's not done. He has bigger plans.
"I want to have 12 white females and one white bull," Barber said. "Just about anybody can have a brown one. I just want to be different. I want it to stand out; (be) unique."
Papalote Ranch has been home to bison for the last 10 years. Barber didn't get into the aspect of white bison until about five years ago.
Barber has developed a process to increase his chances of having white bison. With the white hair color gene being recessive, Barber pairs white bulls with white females and brown females that have come from white bulls to better his odds.
Then, nature has to take its course.
"With the exotic animals, there's no certainty," Barber said. "You hope that they're bred. You do everything you can to enhance that to happen."
So far, he's had incredible success. Of the seven white bison, two of them are cows, one is a heifer, one is a bull, and three of them are calves. Including brown bison, Barber has 23 total bison.
A normal bison calf at weaning age is about $500. If brought up to 1,000 pounds, they're about $1,000. A white bison at weaning age average between $3,500-$4,000.
However, Barber doesn't plan to sell his white bison until he has his herd.
While the white bison are certainly an attraction, Barber has other animals on the 2,600-acre ranch that are certain to catch one's attention. There are animals from five different continents, including oryx, camels, zebras, wildebeests and llamas.
Along with taking care of the animals, Barber has 300 acres of farm land where they farm corn and sesame, along with producing hay.
This is what he has wanted to do since he was young.
It's his passion. It's his dream.
"I love what I do. It's hard work; seven days a week, 365 days a year," Barber said. "The animals don't know it's a holiday; they don't know it's Christmas; they don't know it's New Years; they still want to eat."
Although the work may be exhausting, Barber follows a motto that lets him plow through.
"Can 'til can't," Barber said. "I go from as long as I can, until I can't, and that starts from 5:30 in the morning until probably dark 30. You never know what you're going to be faced around the next corner. There's nothing normal about a day."
With Barber at the helm for many years, the owner asked one thing from him.
"The owner of the ranch wanted everybody's first impression, when they come into the ranch, to be 'wow.'" Barber said. "Hopefully, we will achieve that; we're working on it pretty hard."
With a diverse cast of animals, along with the steadily growing white bison, Barber is sure to generate wows.


text:
Designtec Reviews
Here you can read everything that our customers say about us. We're proud to display so many glowing testimonials.
DesignTec CMS Bongo ® 2016 © Website Design
This website uses cookies. About cookies. By continuing to browse this site you are agreeing to our use of cookies. Designtec Web Design Norwich


text:
Scrap metal collection isn't just the domain of teenagers looking to make an extra buck anymore. In years past, there were always kids asking to haul away your junk for free. It was like the paper route job of rural kids.
But now, as scrap metal prices continue to rise and people are feeling the pinch of a difficult economy, scrap collection is turning into a full-time job. It's an interesting development in our local economy.
"It's become quite a little industry for the folks who want to do the work," said Matt Bowden, of Lordville, NY. "There's quite a bit of money to be made if you can do it right," he told me. Bowden has been collecting scrap for several years and has earned the nickname of "Metal Matt."
To be sure, in the past six months I have been approached by five different people looking for scrap, ready and willing to wrestle our rusty junk from the old "farm dump" onto their trucks, including some twisted pieces of metal that looked like found sculpture. The old fossils of our busted mowing machines and the old disc plow went the way of our neighbor, Mark McGraw, who collects scrap in addition to his regular job. On average, scrap collectors give their customers a 20% cut of their junk's selling price, McGraw pointed out, which can be a little extra pocket money (or gas money, as the case may be). Plus there is the added bonus of cleaning up the countryside.
Another older gentleman I'd never met before appeared at my front door recently and told me he had lost his job. He said he had kids, then asked for some old metal he had seen in our woods. The poor man looked like a heart attack waiting to happen, and I felt bad turning him away, telling him that whatever scrap there was had already gone or been promised. It felt like a scene from "The Grapes of Wrath."
I come from a family that talked about having to eat "canned coon" during the Great Depression. (Raccoon meat preserved in jars.) That was the same era when some local people picked ferns for extra money or made crates for the area's cauliflower crop, earning two cents a box.
Nowadays, most of the scrap being collected around here comes from old cars, said Bowden. However, one of his most interesting finds was an old magazine printing press, he said.
Of course, copper is a valuable metal much in demand. (The average price was at $3.56 a pound on December 2.) Indeed, regulars at a local hunting camp returned this fall to find all their copper fittings and gas piping stolen. Plus, there are reports of copper theft and damage to infrastructure across the country.
Scrap metal prices have risen in recent years owing to a number of reasons, including a shortage of raw materials such as steel and aluminum here and abroad. In fact, much of our recycled metal is exported to countries like China and India. The strong scrap market is also part of the current rise in the recycling industry and "Go Green" initiatives.
Snow will soon cover our woodlands, and along with them, our old dumps and metal graveyards. But with the arrival of spring I expect to see a few more scrap seekers.


text:
From Peace Corps Wiki
- Donations are used specifically for funding site hosting which is approximately $60 a month and currently partly donated.
- The Peace Corps Wiki is on a "shared server" meaning that very often other sites with high traffic cause the wiki to "error."
- Donations will be used to fund "a private server" where the wiki will be allocated plenty of speed and processing power.
- Donations to site hosting will improve the loading speed of the Peace Corps Wiki and make editing, searching, and creating data easier and less frustrating.
- In the future Developmentary would like funding to be allocated to site design as well.
PLEASE DONATE A FEW DOLLARS ....no limitations .... $1 will help!
Donations are tax-delectable. <addhtml>   <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="5835947"> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">  </form>


text:
In the picturesque town of Granville is Brews Cafe, one of the best beer bars you're likely to find in a small town, or anywhere for that matter. With almost 40 craft beers on tap and about 200 different bottles, Brews is a place to which beer nerds flock. And they'll be coming in droves this weekend for the Ohio Beer Festival event.
This Saturday Brews welcomes 10 of the best microbreweries from across Ohio for a tap takeover. Columbus' own Zauber, Four String and Spruce Campbells brewing companies will be on hand. Even the increasingly popular, and thusly hard to find, Jackie O's Brewery from Athens will be at the event.
If you can't make it Saturday, visit another day. Brews is a great place for a beer and some grub. The casual open-air restaurant and bar is instantly welcoming. Belly up to the bar and you'll be engaged in a friendly conversation in mere minutes. Come with a large group and you'll be collectively bellowing with laughter before your second pint. The well-educated and friendly staff is perfect to guide you through the "World of Pure Imagination" beer-u-copia.
The draft selection ($4-$6) covers all styles, offering some wonderfully uncommon beers alongside some of the more well-known craft breweries. Sipping your first pint, you can peruse the massive beer coolers behind the bar and form a plan of attack for sampling the endless number of bottles ($3.25-$3.50 for most 12 ounce bottles, $8 for most bombers). Brews also serves wine and a limited liquor selection.
If beer is the reason to come to Brews, the upscale bar food is the reason to stay. The menu consists mainly of a number of hearty, delicious sandwiches, burgers, pizza and wings with some vegetarian and salads dishes as well. The Turkey Bacon Cheddar Melt ($9) consists of a pretzel bun stuffed with some of the most flavorful turkey I've ever tasted. The "OMG" Mashed Potato Stuffed Burger ($13) — featuring two beef patties filled with mashed potatoes and covered with sour cream and chive sauce — and the SheOHboygan Burger ($13), topped with Wisconsin cheddar cheese curds and bratwurst, are ridiculously awesome. All come with addictive homemade kettle chips.
Photo by Tim Johnson


text:
Profile for aptdweller
Member Since: April 13, 2007
Light Beer
Posts: 1
From The Founder
Flash Poll
Live Streaming Video
Charting the CSP's Future
Six different communications service providers join to debate their visions of the future CSP, following a landmark presentation from AT&T on its massive virtualization efforts and a look back on where the telecom industry has been and where it's going from two industry veterans.
Upcoming Live Events
All Upcoming Live Events
May 16-17, 2017, Austin Convention Center, Austin, TX
SlideshowsPhotos: MBB Forum 2016, Tokyo Day 2
More Slideshows
Hot Topics
T-Mobile CFO on Trump: Expect More Consolidation & More Competition Dan Jones, Mobile Editor, 12/5/2016
Google Both Best Telco Partner & Biggest Threat HR Survey Iain Morris, News Editor, 12/7/2016
Cable Nodes Becoming a Choke Point Brian Santo, Senior editor, Test & Measurement / Components, Light Reading, 12/5/2016
Consolidated Snaps Up Fairpoint for $1.5B Iain Morris, News Editor, 12/5/2016
Small Arctic ISP Caches Netflix in New Way Mari Silbey, Senior Editor, Cable/Video, 12/7/2016
Like Us on Facebook
Upcoming Webinars
December 12, 2016
Cyber Security Can also be a Profit Center
December 14, 2016
WAN Automation - The Time Is Now
December 15, 2016
Generating New Revenue with 5G, IoT and Cloud
December 20, 2016
White-box vE-CPE, Implementation and Test Strategies
December 20, 2016
Tracking CSPs' Progress on Virtualization
BETWEEN THE CEOs - Executive Interviews
Eyal Waldman, CEO of Mellanox Technologies, speaks to Steve Saunders, CEO of Light Reading, for an exclusive interview about the 100 GB cable challenge, cybersecurity and much more.
Join us for an in-depth interview between Steve Saunders of Light Reading and Alexis Black Bjorlin of Intel as they discuss the release of the company's Silicon Photonics platform, its performance, long-term prospects, customer expectations and much more.
Animals with Phones
A Mobile Safari Click Here Literally.
Latest Comment
Live Digital Audio


text:
Town Meeting Warnings
All towns must include the Notice and Instructions for Voters with the posting of the warning. You may download sample Notice to Voters here. Please choose the appropriate notice for the type of ballot that is used in your municipality. These notices are Microsoft Word documents that are printed on 8 1/2 x 14 inch paper.
- Notice and Instructions to Voters – Floor Vote
- Notice and Instructions to Voters – Paper Ballots
- Notice and Instructions to Voters – Accuvote Ballots
Listed below are other samples of warnings that you can download. (These documents are also in Microsoft Word format.)
Listed below are the sections of the Vermont Statutes that pertain to the Warning and Notice for Local Elections.
17 V.S.A. § 2641. Warning and notice required; publication of warnings
(a) The legislative body of a municipality shall warn a meeting by posting a warning and notice in at least two public places in the town, and in or near the town clerk's office, not less than 30 nor more than 40 days before the meeting. If a town has more than one polling place and the polling places are not all in the same building, the warning and notice shall be posted in at least two public places within each voting district and in or near the town clerk's office.
(b) In addition, the warning shall be published in a newspaper of general circulation in the municipality at least five days before the meeting, unless the warning is published in the town report and the town report is mailed or otherwise distributed to the voters at least 10 days before the meeting. The legislative body annually shall designate the paper in which these warnings shall be published. This shall not apply to municipal informational meetings at which no voting is to take place.
17 V.S.A. § 2642. Warning and notice contents
(a) The warning shall include the date and time of the election, location of the polling place or places, and the nature of the meeting or election. It shall, be separate articles, specifically indicate the business to be transacted, to include the offices and the questions to be voted upon. The warning shall also contain any article or articles requested by a petition signed by at least five percent of the voters of the municipality and filed with the municipal clerk not less than 40 days before the day of the meeting.
(b) The posted notice that accompanies the warning shall include information on voter registration, information on early or absentee voting where applicable and other appropriate information.
17 V.S.A. § 2644. Warnings
The original warning for each municipal meeting shall be signed by a majority of the legislative body and shall be filed with the clerk and recorded before being posted. When all positions on the legislative body are vacant, warnings may be signed by the clerk.


text:
Problems viewing videos?
Download latest Flash Player
The U.S. and world economies have been struggling of late as consumers have suffered from a lack of confidence in those. That hasn't stopped crop protection companies from continuing to research and bring new products to market. In this video, Paul Rea, director of U.S. Crop Protection Products, talks about BASF's plans for adding 28 new listings to its line-up of products over the next four years.


text:
Partner exits Winters' Renshaw Bay
A partner and structured credit specialist at Renshaw Bay, the investment boutique founded by former JP Morgan banker Bill Winters, has left the firm.
Matteo Sotti had been a partner at Renshaw Bay since December 2011, a month after the firm gained regulatory approval to do business, according to the UK's Financial Services Register.
Sotti ceased to be a partner at the firm on January 30, according to a filing at Companies House, and is now listed as inactive on the Financial Services Register.
Sotti is a structured credit specialist, who had been a managing director and head of structured credit trading at Italian group Unicredit from 2007 until 2010. Before that, he spent seven years in structured credit at Deutsche Bank, where he was a managing director, according to his LinkedIn profile.
Companies House records show that Sotti had been one of 14 partners at Renshaw Bay, a limited liability partnership set up by Winters, a former co-chief executive of JP Morgan's investment bank who was voted the most influential person in the European capital markets in the annual FN100 list shortly before leaving the US bank in late 2009.
Renshaw Bay is a global alternative asset management and advisory boutique that was launched in partnership with Lord Rothschild's RIT Capital Partners and Reinet Investments, chaired by Johann Rupert.
The company did not respond for a request for comment on Sotti's departure this morning in time for publication, while Sotti did not respond to a LinkedIn request for comment on his departure and future plans.


text:
There are lots of ways you can create a terrific vegetable garden. It can be a few containers on the porch, or neat rows in a big patch of vegetables in the back yard. Growing a garden is a great opportunity to include your kids in a fun project. They love being involved. With a little preparation and a little planning, you can have delicious vegetables to enjoy, year after year.
Decide how big of a garden you want. If you're not sure, you can always start small. While you think about it, plan around an area that gets at least six hours of sunlight. More would be better.
Now you can choose what you want to grow. Keep in mind what grows best in your area and the space you have allocated. If you plant seeds, the packet will have clear directions. Just remember that seeds take longer than container plants, which you can put in the ground during the spring after the last frost.
Soil provides the nutrients your vegetable plants need to thrive. You can improve your soil by adding a mix of organic materials and slow-acting granular fertilizer. The easy option is to use Miracle-Gro� Garden Soil for Flowers & Vegetables, or Miracle-Gro� Organic Choice Garden Soil. Rake in a four-inch layer to your soil. If you like, you can use a hoe or a tiller. Also, remember to pick up rocks and spray weeds.
With vegetables, timing is everything. Broccoli, carrots, lettuce, peas, and spinach like cool weather. So you can plant them one month before the last expected frost. After the last frost, plant your warm-weather vegetables: corn tomatoes, cucumbers, and peppers.
At the seedling stage, your plants just need to be kept moist. Later on, make watering and
feeding a regular routine. Aim for the base of the plant. For excellent results, try
Miracle-Gro� Organic Choice All-Purpose Organic Plant Food, followed by a healthy dose of
water. Another way to go is to feed and water at the same time with products such as
Miracle-Gro� LiquaFeed�.
Weeds compete with your vegetables. They steal nutrients, water, and sunlight, so you want to keep them out. A two-inch layer of mulch around your plants will help discourage weeds. Grass clippings work, too. They also provide nitrogen as they break down.


text:
view full screen
Green Colorblock Tassel Necklace
Style: 570100446
Out of Stock
Double-sided crystals and creamy faux pearls dangle a gilded tassel with Kelly green tips.
- 34"-36" with extender.
- Lobster claw clasp.
- Acrylic pearls and glass crystals. Goldtone metal.
- Custom designed exclusively for WHBM. Handcrafted with nickel-free and lead-free metal.
Read more… Read less…


text:
The reason that I am posting this is that I believe that this has much to do with the ongoing 'Law/Gospel distinction debate'. I also think that this sheds some light as to why objections are being raised.
There are those who say that there is no difference between the Lutheran view and the Reformed view when it comes to the Third Use of the Law. However, according to Bavinck, that is not true.
Lutheran View
Reformed ViewLutherans almost exclusively have an eye for the accusing and condemning function of the law and therefore know no higher bliss than deliverance from the law. Law is necessary only because of sin. In the state of perfection, there is no law. God is free from the law; Christ was in no way subject to the law for himself; the believer is no longer subject to the law. Granted, Lutherans do speak of a threefold use of the law, not only of a political, that is, civil, use for the purpose of restraining sin, and of a pedagogical use to arouse the knowledge of sin, but also of a didactic use of the law to be a rule of life for believers. This last use [Third Use], however, is solely necessary since and insofar as believers still continue to be sinners and have to be restrained by the law and led to a continuing knowledge of sin. By itself, when faith and grace come on the scene the law expires and loses all its meaning.
[Emphases mine]"The Reformed held a very different view. The political use and the pedagogical use of the law have only become "accidentally" necessary because of sin. Even when these earlier uses cease, the most important one, the didactic or normative use, remains. The law, after all, is an expression of God's being. As a human being Christ was naturally subject to law for his own sake. Before the fall the law was inscribed on Adam's heart. In the case of the believer, it is again engraved on the tables of his heart by the Holy Spirit; and in heaven all its inhabitants will conduct themselves in accordance with the law of the Lord. The gospel is temporary; the law is everlasting and precisely that which is restored by the gospel. Freedom from the law, therefore, does not mean that Christians no longer have anything to do with that law, but the law can no longer demand anything from them as a condition for salvation and can no longer judge and condemn them. For the rest they delight in the law in their innermost being [Rom. 7:22] and meditate on it day and night [Ps. 1:2]. For that reason that law must always be proclaimed in the church in the context of the gospel. Both law and gospel, the whole Word, the full counsel of God, are the content of preaching. Accordingly, among the Reformed the law occupies a much larger place in the doctrine of gratitude than in that of misery. [Here Bavinck has a footnote providing bibliographical references relating to the views of Luther, Zwingli, Calvin, Zanchius, Witsius, De Moor, Vitringa, Schneckenburger, Frank, and Gottschick.]
Reformed Dogmatics, Vol. 4. 2008 Edition. pp. 454-455.
If you want to read more, you can access Dr. Kloosterman's translation HERE.
Note: I am in no way implying that the 'Law/Gospel distinction' should be rejected because it is said to be primarily Lutheran. It is clear to me that this distinction is part of Reformed theology. However, it makes me wonder why there are those who insist that there is no difference.


text:
Fairfield Stops Statesmen in ECAC Opener
from press release
For the seventh time in as many seasons the Fairfield University men's lacrosse team earned a win in its ECAC Lacrosse League opener, defeating Hobart College 17-12 Saturday afternoon on Alumni Field. The Stags improve to 8-1 overall and 1-0 in league play, while the Statesmen fall to 2-5 on the year and 0-1 in ECAC action.
In a game of runs the Stags jumped out to a 3-0 lead as John Snellman (13:24), Colin McLinden (9:17) and Sam Snow (6:01) tallied goals. Hobart answered with consecutive goals and Brent Adams rounded out the scoring for the first quarter, to give the Stags a 4-2 edge. The teams traded goals within a 35-second span early in the second quarter as Adams scored his second man-down goal of the year to give Fairfield a 5-2 edge with 10:13 to play before intermission.
The Statesmen mounted their first rally of the game following that tally scoring three goals over a 5:35 stretch. Alex Love struck for the final two goals, tying the game at 5-5 at the 6:59 mark and netting a pass from Cam Stone 3:01 before the break to give Hobart a one-goal lead, 6-5. That lead was short lived as Adams scored an unassisted goal 90 seconds later to tie the game 6-6. Snellman put Fairfield back ahead 52 seconds later, and Snow scored a man-up goal with 12 seconds left before the intermission to give the Stags an 8-6 lead at the break.
Fairfield scored the first three goals of the second period, with Snow striking twice in 24 seconds. He scored at 13:47, unassisted and then 24 seconds later put home a pass from Bryan Barry for a 10-6 advantage. Nick Tandoi scored at the 11:50 mark and Snellman put home a man-up score at 9:30 to run the Stags streak to seven unanswered and give Fairfield a 12-6 lead with 9:30 to play in the third quarter.
Sam Miller scored consecutive goals for Hobart, at 8:12 and 5:54 of the third quarter, to pull end the Stags run and get the Statesmen back to 12-8. Eric Warden tallied the final score of the third, an extra man tally, to push the lead back to five, 13-8. It started a three goal run for Fairfield, with Snellman scoring 1:59 into the final stanza and followed by Jordan Greenfield at the 12:29 mark, to give the Stags a 15-8 advantage. Hobart scored four straight goals, three coming in 80 seconds, to cut that deficit to 15-12, but Drew Federico (5:01) and Adams (3:43) for a 15-8 lead.
Adams, Snellman and Snow tallied four goals apiece for the Stags, marking the second time this season that the trio had recorded hat tricks in the same game. Snow added two assists to lead all scorers with six points. Snellman had on assist for five points and McLinden had a goal and two assists. Federico had a goal and an assist to round out the multi-point scorers for Fairfield.
Michael Roe was 15-28 at the face-off X and picked up a game-high six ground balls. Marshall Johnson won a face-off and picked up four ground balls, as the both teams picked up 16 ground balls in the period. Each team also had six caused turnovers, with six different players causing one for Fairfield and Sean Regan causing a game-best two for Hobart.
The Statesmen received hat tricks from Love and Miller, with Love adding two assists for five points. Ca Stone also had five points, handing out a team-best four assists. Gryphin Kelly was 14-27 at the face-off X for the Statesmen.
Charlie Cipriano made eight saves in net for the Stags to earn the victory. Peter Zonino made 17 saves in a losing effort for Hobart.
The 17 goals for the Stags equal the most in a game under fourth-year head coach Andy Copelan. Fairfield defeated St. John's 17-5 in the finale
comments powered by Disqus


text:
Helping students gain understanding and self-confidence in algebra.
japiga wrote:1^2+2^2+3^2…..+ 999^2 . How to put this sum in the simple mathematic formula? Since, only 999^2 = 998001and imagine total sum: + 998^2 + 997^2 + 996^2 + ... + 1. I hope that now is more clear what I actually need. Thanks a lot!
japiga wrote:Do you think that this assignment is finished if I accept this and moreover if my teacher accept it? Is there more mathematic approach and more predictable the final result of this "quadratic" sum? Since first sum (1+2+3+…+999) is more clear how to reach the final result!


text:
6x Slim Portable USB 2.0 BD/DVD/CD Burner. Supports BDXL™ format. Ultra lightweight. USB Bus Powered. CyberLink® software included.
- Ultra Lightweight and Portable (8.5 oz)
- Reads and Writes to BDXL media (up to 128GB on one disc)
- Auto Quiet, PowerRead™, and PureRead 2+ features
- Up to 6x writing speed on BD-R & BD-R DL media
The BDR-XD04 is one of the world's smallest and lightest BD/DVD/CD portable burners supporting BDXL. The ultra-compact clamshell type drive can read and write to all BDXL discs1 including BD-R triple-layer 100GB media, BD-R quad-layer 128GB media, and BD-RE triple layer 100GB media, as well as conventional Blu-ray discs (single-layer 25GB media and dual-layer 50GB media). The portable device, measuring only 5.2" (W) X 0.55" (H) X 5.2" (D) and weighing a mere 8.46 ounces, also has the ability to be powered directly via USB.
The BDR-XD04 is bundled with CyberLink Media Suite 8, which includes PowerDVD™ 10 BD3D, PowerDirector® 9, and Power2Go® 7. PowerDVD 10 BD3D delivers award winning playback software and supports playback of Blu-ray Disc 3D titles. PowerDVD will even convert your 2D video files and DVDs into a 3D experience, and will upscale standard-definition content to high-definition quality. PowerDirector 9 allows you to import your home movies, edit them, and then author them to Blu-ray Disc or DVD, or upload them to social media sites. Power2Go 7 gives you the ability to burn your valuable files to Blu-ray (including triple and quad layer BDXL discs), DVD or CD media. With BDXL support, you can now back up your files with fewer discs than ever before, and since the drive is portable and USB bus powered, all of this can be done virtually anywhere.
The BDR-XD04 can write up to 6x2 on BD-R and BD-R dual-layer (DL) media. One BD-R DL disc can hold the same amount of data as 10 DVDs (single-layer). The drive can write up to 4x on BD-R triple-layer (TL) and quad-layer (QL) media. One QL disc can hold the same amount of data as 27 DVDs (single-layer). The drive is also backward compatible to read and write to most DVD and CD recordable media. Click on the "Specifications" tab to see all supported media formats and the read and write/burn speeds achievable for each format.
The BDR-XD04 also has unique features such as PowerRead™, Auto Quiet mode, and PureRead2+. PowerRead can provide smoother movie playback when a disc has fingerprints or minor surface scratches. Auto Quiet mode intelligently adjusts the disc rotation speed to reduce noise (useful while watching movies or listening to music), and PureRead automatically adjusts the drive parameters to minimize sound glitches during music playback. Auto Quiet mode and PureRead can be configured as well as enabled and disabled with the Pioneer BDR-XD04 Drive Utility. The utility is provided on the CyberLink software disc, but is not automatically installed with the CyberLink software.
Drive Features
|Store more data
…Up to 156% more data storage capacity than a 50GB Dual Layer Blu-ray Disc. The BDXL™ format supports BDXL Blu-ray media (including 128GB Quad Layer (QL) and 100GB Triple Layer (TL) Blu-ray Disc™).
|Watch 3D movies
The BDR-XD04 is 3D compatible and comes bundled with 3D playback software. All you need for your 3D experience is a 3D display system3.
|Faster burning
6x2 writing on BD-R single-layer and dual-layer discs. 4x writing on BD-R triple-layer and quad layer discs.
An eco-friendly drive
|Smooth movie playback
Scratches, fingerprints and other abnormalities on the surface of a disc can sometimes cause Blu-ray and DVD movie playback to stop. When a PowerRead enabled drive is not able to read through obstructed areas of a disc, it will attempt to quickly move forward to the next available data point, resulting in smoother Blu-ray and DVD movie playback4.
|A smarter drive
Pioneer drives with Auto Quiet mode, monitor how they are being used and will adjust their speed automatically – high speed for data transfer, and low speed for music or movie playback.
|A better music experience
Scratches and fingerprints on your CDs can cause them to skip. A drive normally makes a calculated guess at the unreadable data and attempts to correct this to match the original music. However this is not 100% accurate. PureRead, when enabled, makes the drive reread the obscured data to extract the original music as accurately as possible5.
|Wide blank media support
Pioneer strives to have best in class performance over a wide range of media – our drives achieve this for a large variety of BD and DVD media. Refer to the drive's media support list for all supported media and the write speed that can be achieved.
CyberLink Software Included
PowerDVD™ 10 BD3D - Delivers award-winning playback quality for Blu-ray and DVD movies on a PC and supports 3D playback. Includes TrueTheater™ Technology which converts 2D video files and DVDs into a 3D experience and upscales standard-definition content to high-definition quality.
PowerDirector® 9 - Edit and author your home video masterpieces to Blu-ray Disc or DVD, or upload them to social media sites.
Power2Go® 7 - Store and share valuable personal files on a secure and removable disc.
Software Minimum System Requirements:
|Two available USB 2.0 ports
|Operating System:
|Microsoft® Windows® 8, 7, Vista® and XP SP3
|Intel® Core™ 2 Duo E6750 (2.66MHz), AMD® Phenom 9450 (2.1GHz) or faster
|Video Card:
|Intel G45, NVIDIA® GeForce® 8600GT, AMD Radeon® HD2600 or faster
HDCP6 compliant display required for Blu-ray playback
1024 x 768 minimum display resolution
2GB RAM required for Blu-ray playback
3GB RAM or greater recommended for editing HD video
|Hard Disk Space:
5GB available space minimum
128GB or more available space required for creating quad-layer Blu-ray Discs
|3D Playback:
|3D display system required3
1Note: Triple and quad layer BDXL discs can only be used in BDXL drives.
26x BD-R and BD-R DL write speed achieved using certain media and only with the Pioneer USB driver installed with the included Cyberlink software.
3For more information on 3D playback system requirements and to download a BD and 3D advisor utility, visit www.cyberlink.com.
4PowerRead is not guaranteed to work with all disc conditions or under all PC environments.
5PureRead2+ is not guaranteed to work with all disc conditions or under all PC environments .
6HDCP (High-bandwidth Digital Content Protection) display device is required only for playback of high-definition copy protected content (for example, a Hollywood Blu-ray title). For such content, the connection between the PC and the display device must be made using a digital DVI, HDMI, or DisplayPort cable.
Pioneer and the Pioneer logo are registered trademarks of Pioneer Corporation.
Intel and Core are trademarks Intel Corporation, registered in the U.S. and other countries.
AMD and Radeon are trademarks of Advanced Micro Devices, Inc., registered in the U.S. and other countries.
BLU-RAY DISC and the Blu-ray Disc logo are trademarks of the Blu-ray Disc Association.
Cyberlink, Cyberlink PowerDVD, Cyberlink PowerDirector, Cyberlink Power2Go, and TrueTheater are trademarks or registered trademarks of Cyberlink Corporation.
PowerRead is a registered trademark of Buffalo Technology (USA), Inc.
SERIAL ATA and its Design Mark are trademarks of Serial ATA International Organization.
Microsoft, Windows, and Vista are registered trademarks of Microsoft Corporation in the U.S. and other countries.
NVIDIA and GeForce are registered trademarks of NVIDIA Corporation.


text:
Investigations in Number, Data, and Space [Grade 5], Student Activity Book
Sign Up Now!
Already a Member? Log In
You must be logged into Bookshare to access this title. Learn about membership options, or view our freely available titles.
- Brief Synopsis:
- NIMAC-sourced textbook
- Long Synopsis:
- NIMAC-sourced textbook
- Book Quality:
- Publisher Quality
- 9780328697564
- Publisher:
- Pearson Education
- Date of Addition:
- 05/18/12
- Copyright Date:
- 2012
- Copyrighted By:
- Pearson Education
- Adult content:
- No
- Language:
- English
- Categories:
- Textbooks
- Grade Levels:
- Fifth grade
- Submitted By:
- Bookshare Staff
- This book is currently only available to public K-12 schools and organizations in the United States for use with students with an IEP, because it was created from files supplied by the NIMAC under these restrictions. Learn more in the NIMAC Help Center.
Reviews of Investigations in Number, Data, and Space [Grade 5], Student Activity Book (0 reviews)
0 - No Rating Yet


text:
Join us for a relaxing lunch any afternoon or pop in for Happy Hour after a hard days work. Ganache is the date night spot for couples looking to set the mood. Or for your next Girls night out! Come in and have your favorite drink or try something new. Ganache offers an ever changing selection of over 25 wines by the glass. 6 Beers on draft and over 50 craft, import and local beers in bottles.
Ganache Cupcake Lounge
2412 Jack St in Parker Square
Wichita Falls, TX 76308
Copyright 2016 Nexstar Broadcasting, Inc. All rights reserved. This material may not be published, broadcast, rewritten, or redistributed.


text:
Easy Valentine's Day Sugar Cookies Recipe
Weekly recipes to serve with a glass of milk.
- Yield:Makes 2 dozen cookies
- Active time: 15 minutes
- Total time:35 minutes
This recipe appears in:Cookie Monster: Easy Valentine's Day Sugar Cookies
Easy, chewy sugar cookies are rolled in pink sprinkles to make them perfect for your Valentine.
About the author: Carrie Vasios Mullins is the editor of Serious Eats: Sweets. She likes to peruse her large collection of cookbooks while eating jam from the jar. You can follow her on Twitter @carrievasios
- 2 cups (10 ounces) all purpose flour
- 1/2 teaspoon baking soda
- 1/2 teaspoon kosher salt
- 3/4 cup (1 1/2 sticks) unsalted butter, at room temperature
- 1/2 cup sugar
- 1/2 cup confectioners sugar
- 1 egg
- 2 teaspoons vanilla
- 1/4 cup canola oil
- Pink sanding sugar, or sprinkle of your choice
In a medium bowl, whisk together flour, baking soda, and salt. Set aside. In the bowl of a stand mixer fitted with a paddle attachment, cream together butter, sugar, and confectioners sugar, about 3 minutes. Add egg and vanilla and beat to combine. Beat in canola oil. Add flour mixture and mix just until incorporated. Dough will be soft. Wrap in plastic wrap and refrigerate for 1 hour.
Adjust oven rack to upper and lower middle positions and preheat oven to 350°F. Line two baking sheets with parchment paper.
Fill a shallow bowl with sanding sugar. Use a 2-ounce cookie scoop (or a rounded tablespoon) to measure dough, then roll dough into a smooth ball. Roll each ball in sprinkles to cover then transfer to prepared baking sheet. Bake until cookies are golden at the edges, about 20 minutes. Let cool 5 minutes then transfer to a wire rack to finish cooling. Cookies will keep in an airtight container for up to 3 days.


text:
Table of Contents:
- More GMO-bashing, but as usual the other side gets short shrift in media
- Forbes: 'A carefully orchestrated media event'
- European study: 'Insufficient scientific quality'
- Main findings of initial study
A French study reporting that mice that ate genetically modified corn sprayed with glyphosate — or drank water with glyphosate levels similar to that in U.S. tap water — were much more likely to die, and to die younger is the latest we're-all-being-poisoned-the-sky-is-falling scenario from those those who would have agriculture revert to mules and manure — and certainly is nothing new in France, where opposition to GMOs has been a cause célèbre from Day 1.
The headlines in the world media and on the Internet were downright apocalyptic: "Massive tumors in rats fed GM maize." "New study: Rats fed lifetime of GM corn grow tumors; 70% of females die early." "France orders probe after rat study links GM corn, cancer." "Shock findings in new GMO study: Rats fed lifetime of GM corn grow horrifying tumors" (this one ended, "Spread the word: GMOs are toxic").
And on and on.
This latest health Armageddon tempest in a teapot was occasioned by a French study reporting that mice that ate genetically modified corn sprayed with glyphosate — or drank water with glyphosate levels similar to that in U.S. tap water — were much more likely to die, and to die younger.
Results, the French researchers claim, showed female rats fed GMO corn were two to three times more likely to die than rats in the control group that didn't eat the corn. Fifty percent of males and 20 percent of females that ate the corn died significantly earlier than those in the control group.
"Eating genetically modified corn and consuming trace levels of (glyphosate) chemical fertilizer [?] caused …horrifying tumors, widespread organ damage, and premature death," one website reported, terming the study "the most thorough research ever published into the health effects of GM food crops" and glyphosate.
This Frankensteinian, we're-all-being-poisoned-the-sky-is-falling scenario is nothing new by those who would have agriculture revert to mules and manure — and certainly not in France, where opposition to GMOs has been a cause célèbre from Day 1.
Dig deeper into the media fray, though, and there are more reasoned voices behind the headlines. Great Britain's Science Media Centre noted concerns by a raft of other scientists about the study (http://www.sciencemediacentre.org/pages/press_releases/12-09-19_gm_maize_rats_tumors.htm).
Here are a few of the concerns they cited:
—"There are anomalies throughout the paper that normally should have been resolved through the peer review process."
—"In my opinion, the methods, stats, and reporting of results are all well below the standard I would expect in a rigorous study; to be honest, I am surprised it was accepted for publication."
—"The control group is inadequate to make any deduction."
—"Like most of the GM debate, this work has very little to do with GM… There is good evidence that introducing genes into crops using GM techniques results in fewer changes to the crops than introducing them using conventional breeding."
—"The first thing that leaps to my mind is, why has nothing emerged from epidemiological studies…where so much GM has been in the food chain for so long? If the effects are as big as reported, and if the work really is relevant to humans, why aren't North Americans dropping like flies? GM has been in the food chain there for over a decade, and longevity continues to increase inexorably! And if the effects are as big as claimed, why haven't the previous 100-plus studies by reputable scientists, in refereed journals, noticed anything at all?"
Why indeed?


text:
Slip into Steve Madden 'Emuse' for the perfect transitional sneaker. Cap off your day to day wardrobe in the style and comfort every Madden girl loves.
We are not perfect but we try to be! If you are not satisfied, please let us know how we can improve your footnotesonline experience!
Most orders ship within 24 hours of being placed, Monday-Friday. Please refer to the Shipping map below to estimate your delivery date.
Visit US Shipping Page or the International Shipping Page
Please enter your information and we will alert you when your request becomes available!
Note: Due to their popularity, some sizes may not be available from the manufacturer. However we will do our best to accommodate you. Thanks!
Thank you for subscribing to our newsletter.


text:
"I've been listening to the Catholic Answers Live podcast for about a year now. Today I heard Patrick Coffin say you were reaching all nations, and I felt I had to confirm it! I love your show and I learn every day. Thank you very much!"
"Conscience remains hesitating, and convictions come to nothing, unless the teachings of religion complete the data of reason."