/*
* Copyright 2007 GigaSpaces Technologies Ltd. All rights reserved.
*
* THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. GIGASPACES WILL NOT
* BE LIABLE FOR ANY DAMAGE OR LOSS IN CONNECTION WITH THE SOFTWARE.
*/
/**
* Title: JavaSpaces Hello World Example
* Description: This example provide a basic illustration for
* getting GigaSpaces space proxy using jini discovery LookupLocator.
* Using some of JavaSpaces basic operations such as write, read, take with
* or without jini transactions.
*/
package com.gigaspaces.examples.tutorials.plainjavaspaces;
import net.jini.core.lease.Lease;
import net.jini.space.JavaSpace;
import net.jini.core.transaction.Transaction;
public class PlainJavaSpaces {
public static void say (String msg) {
System.out.println(msg);
}
static public void main(String[] args) throws Exception {
System.err.println("\nWelcome to the GigaSpaces PlainJavaSpaces "+
"Example\n");
if (args.length != 1) {
System.out.println("Usage: <URL>");
System.out.println("<protocol>:);
System.exit(1);
}
JavaSpace space = JiniSpaceAccessor.findSpace(args[0]);
if ( space == null ) {
System.err.println("Space url:"+args[0]);
System.err.println("Space not found...");
System.exit(-1);
}
say("Found space: " + args[0]);
Message message = new Message();
message.ID = 1;
message.content = "My first PlainJavaSpaces Message!";
say("\nWriting the following message to the space: \n" + message.toString());
space.write(message, null, Lease.FOREVER);
message.ID = 2;
message.content = "My second PlainJavaSpaces Message!";
say("\nWriting the following message to the space: \n" + message.toString());
space.write(message, null, Lease.FOREVER);
Message template = new Message();
template.ID = 1;
say("\nTrying to read from the space message with ID = " + template.ID);
Message result = (Message)space.read(template, null, JavaSpace.NO_WAIT);
if (result != null){
say("Read message: " + result.toString());
}
template.ID = 2;
say("\nTrying to take from the space message with ID = " + template.ID);
result = (Message)space.take(template, null, JavaSpace.NO_WAIT);
if (result != null){
say("Taken message: " + result.toString());
}
say("\nTrying to read from the space message with ID = " + template.ID);
result = (Message)space.read(template, null, 5 * 1000);
if( result != null)
say("Read message: " + result.toString());
else
say("Message not found after 5 sec.");
message.ID = 3;
message.content = "My first leased message!";
say("\nWriting message to space leased for 5 sec.");
space.write(message, null, 5 * 1000);
say("Trying to read from the space the leased message.");
template.ID = 3;
result = (Message)space.read(template, null, JavaSpace.NO_WAIT);
if( result != null)
say("Read message: " + result.toString());
else
say("Message not found.");
System.out.println("Sleeping for 6 seconds. . .");
Thread.sleep(6 * 1000);
say("Trying to read from the space the leased message.");
result = (Message)space.read(template, null, JavaSpace.NO_WAIT);
if( result != null)
say("Read message: " + result.toString());
else
say("Message not found, Lease expired.");
say("\nSpace operations under transaction");
say("----------------------------------");
say("Finding a Jini transaction manager and creating a transaction proxy.");
Transaction.Created txn = TransactionHelper.getInstance().getJiniTransaction(60 * 1000);
say("Transaction manager found.");
message.ID = 4;
message.content = "Hello Transaction!";
say("Write message under a transaction...");
space.write(message, txn.transaction, Lease.FOREVER);
say("Abort transaction...");
txn.transaction.abort(1000);
say("Try to read the message written under transaction.");
template.ID = 4;
result = (Message)space.read(template, null, 1000);
if( result != null)
say("Message found: " + result.toString());
else
say("Message Entry not in space");
say("\nFinding a Jini transaction manager and creating a transaction proxy.");
txn = TransactionHelper.getInstance().getJiniTransaction(60 * 1000);
say("Transaction manager found");
say("Write again a message under a transaction...");
message.content = "Hello Transaction another try";
space.write(message, txn.transaction, Lease.FOREVER);
say("Commiting transaction...");
txn.transaction.commit(1000);
say("Try to read the message written under transaction");
template.ID = 4;
result = (Message)space.read(template, null, 1000);
if( result != null)
say("Message read content: \n" + result.toString());
else
say("Message Entry not in space");
System.exit(0);
}
}