text:
Configuring and using XA distributed transactions in WebSphere Studio
What are distributed transactions?
Before diving into how to develop applications using distributed transactions, let's review what distributed transactions are and why they're useful. Several terms are often used interchangeably: transaction, distributed transaction, two-phase commit, XA transaction, transaction propagation, and CORBA OTS transaction. But these terms actually have different meanings:
Transaction -- a series of actions performed as a single logical unit of work in which either all of the actions are performed or none of them are (also called a local or simple transaction). A transaction is often described as ACID -- atomic, consistent, isolated, and durable. Changes made during a transaction are tentative; to make them permanent, a transaction ends with a commit action that finalizes the changes. If any of the changes cannot be committed, the transaction will roll back, undoing all of the changes as if the transaction never took place. If the code performing the actions decides not to commit or cannot commit successfully, then it must roll back the transaction to undo the actions. If an application crashes in the middle of a transaction, when it restarts, transaction recovery will roll back the open transaction. In a write transaction, all changes must either all commit or all roll back. In a read transaction, there are no changes to commit, but the transaction prevents the data being read from changing until all of the reads are complete.
Distributed transaction -- An ACID transaction between two or more independent transactional resources (for example, two separate databases). For the transaction to commit successfully, all of the individual resources must commit successfully; if any of them are unsuccessful, the transaction must roll back in all of the resources.
Two-phase commit -- An approach for committing a distributed transaction in two steps: Phase 1, Prepare: Each of the resources votes on whether it's ready to commit -- usually by going ahead and persisting the new data but not yet deleting the old data. Phase 2, Commit: If all of the resources are ready, they all commit -- after which the old data is deleted and the transaction can no longer roll back. Two-phase commit ensures that a distributed transaction can always be committed or always rolled back, even if parts of the system crash while the transaction is being committed. Many, but not all, distributed transaction implementations use two-phase commit.
XA specification -- Documents the Open Group's X/Open Distributed Transaction Processing (DTP) model, which defines how an application program uses a transaction manager to coordinate a distributed transaction across multiple resource managers. Any resource manager that adheres to the XA specification can participate in a transaction coordinated by an XA-compliant transaction manager, thereby enabling different vendors' transactional products to work together. All XA-compliant transactions are distributed transactions; XA supports both single-phase and two-phase commit.
This diagram form the XA specification shows the parts of a distributed transaction:
X/Open Distributed Transaction Processing (DTP) model
Transaction propagation -- Enables multiple collaborating objects to participate in a single transaction, by passing the transactional context as part of the thread. As the thread passes through the collaborating objects, the transaction manager uses the thread's transaction context to perform all work.
CORBA OTS specification -- (Common Object Request Broker Architecture Object Transaction Service, from the Object Management Group) -- Defines how compliant processes propagate a transactional context from one process to the next across multiple process threads. This propagation enables distributed objects to collaborate in a single transaction, even if they're running in containers (e.g., ORBs) from different vendors. The CORBA OTS specification builds on the XA specification
This diagram form the OTS specification shows the parts of a transaction involving distributed objects:
Object Transaction Service (OTS) Model
IBM® WebSphere® Application Server V5 provides its applications with a transaction manager that is both XA- and CORBA OTS-compliant.
This transaction manager implements two APIs that are part of Java™ 2 Enterprise Edition (J2EE) -- the Java Transaction API (JTA),
which provides simplified access to the Java Transaction Service (JTS). The XA part of JTA is capable of coordinating the transactions for any XA-compliant resource
(via the interface
javax.transaction.xa.XAResource). Two resource types in J2EE that support XA are the Java Database Connectivity (JDBC) API (through the interface
and the Java Message Service (JMS) API (through the interface
javax.jms.XAConnection). The transaction manager
uses CORBA OTS when an EJB in one container calls an EJB in another container.
Why use distributed transactions?
Whenever an application needs to access or update the data in a transactional resource, it should (and usually must) use a transaction to do so. In standard JDBC code without auto-commit, the application uses a connection to access and update data, then commits the connection to end the transaction (and start another). When a JMS client sends or receives a message, the messaging provider uses a transaction to add the message to or remove the message from the destination. The JMS client can optionally control this transaction explicitly, such as to coordinate receiving a message from one queue with sending a message on another queue in the same messaging system.
Whenever an application has a single function that needs to access or update the data in multiple transactional resources, it should use a distributed transaction. You can use a separate simple transaction on each of the resources, but this approach is error-prone. If the transaction in one resource commits successfully but another fails and must roll back, the first transaction can no longer be rolled back, so the state of the application becomes inconsistent. If one resource commits successfully but the system crashes before the other resource can commit successfully, the application again is inconsistent.
What kinds of functions need to access multiple transactional resources? Here are some examples:
- Moving data between databases -- An application moving data from one database to another requires a distributed transaction. Otherwise, the data may be duplicated (if the insert completes and the delete fails) or lost (if the delete completes and the insert fails).
- Moving data between a database and a message -- An application may need to move data from a JMS message to a database table or vise versa. Without a distributed transaction, the data can be either duplicated or lost.
- Logging messages to a database -- An application may use a database to keep a "paper trail" of messages exchanged with partner applications. To keep the record consistent and accurate, it should log the message in the same distributed transaction that sends or receives the message.
- Moving a message between messaging systems -- Many messaging scenarios involve receiving one message and sending another as a result. When the two destinations are in the same messaging system, the receive and send can be done in a simple transaction because they involve a single transactional resource. However, when the message is received from a destination in one messaging system and sent to a destination in a separate messaging system, the application should perform the action in a distributed transaction between the two messaging systems to ensure that the message is neither duplicated nor lost.
- Coordinating with an enterprise information system (EIS) -- The J2EE specification includes the J2EE Connector Architecture for implementing adapters to access enterprise information systems (EIS) such as CICS or SAP. The level of transactional support the adapter provides -- none, local, or XA -- depends on the capabilities of the EIS being adapted. If an adapter supports XA transactions, the application can use distributed transactions to coordinate the EIS resource with JDBC and JMS resources.
Basically, whenever an application is using multiple transactional, persistent resources, it may need distributed transactions. Any function that manipulates more than one resource should use a distributed transaction.
Transactions and EJBs
Enterprise JavaBeans (EJBs) have many advantages: componentization, remoteness, security, persistence capabilities, messaging capabilities, and so on. While all of these features are useful, perhaps the single greatest advantage of using EJBs is transaction management. EJBs and container-managed transactions (CMTs) make transaction management virtually transparent to the bean developer.
Every public method on an EJB defines a transactional boundary between the EJB container and the EJB client, as specified in
the deployment descriptor. The result is that all EJB code invoked by a client call typically executes in a single container-
managed transaction (unless the deployment descriptor specifies otherwise), such that either all of the code's work is performed,
or it all rolls back. Furthermore, the bean developer doesn't actually have to write any code for handling transactions, such as
deciding when to invoke the
commit() method and what to do if it fails. The container infers the transaction model
from the method boundaries and deployment descriptor, and controls the transaction commits and rollbacks at runtime.
EJB container-managed transactions work even when multiple EJBs collaborate to perform a task. Once the first EJB in the thread establishes a transactional context, the transaction manager uses transaction propagation to pass the context to the collaborating EJBs so that all work is performed in the same transaction (unless the deployment descriptor specifies otherwise). Even if the collaborating EJBs are in different containers, CORBA OTS enables the containers' transaction managers to coordinate so that the transaction propagates across containers.
EJB container-managed transactions are especially helpful for controlling distributed transactions. This approach allows code to manipulate multiple sets of data without regard to whether the data all comes from a single resource (requiring a simple transaction) or multiple resources (requiring a distributed transaction). The application simply uses EJBs to manipulate the data as needed. The EJB container's transaction manager determines at runtime whether the data comes from one resource -- in which case it lets the resource manager manage the transaction -- or multiple resources -- in which case the transaction manager manages the transaction and coordinates the resource managers. Whether the data comes from one resource or many, the EJB code remains the same, and the EJB container handles the transaction appropriately.
Developing with distributed transactions
Now we've reviewed what we want to accomplish. We've established what distributed transactions are, scenarios where they're useful and necessary, and how EJB technology makes these scenarios much simpler for the bean developer. Now let's use WebSphere Studio Application Developer (hereafter called Application Developer) to create and run a simple example.
These sections show you how to create an Application Developer test server and configure it for JDBC and JMS. It shows you the specific settings to fill in, using values that are specific to this example. The description before each table explains which values are applicable to all applications and which only apply to this example.
This example will show how to configure XA data sources for two common JDBC database products, DB2®, and Oracle. It will also show how to configure a JMS destination with an XA connection.
To start, we need to create a new test server. To do so, switch to the Servers perspective. From the Server Configuration view's context (e.g. right mouse button) menu, select New => Server and Server Configuration. In the create dialog, enter a server name (such as "XA Example Server"), choose Test Environment (either WebSphere version 5.0 or WebSphere version 5.1 for this example) as the server type, and click finish.
Create a new server and server configuration dialog
Configure an Oracle XA data source
Before we create the data source, we'll create a JAAS authentication entry, which later we'll associate with the data source so that it can log into the database. In the server configuration editor, switch to the Security page. In the JAAS Authentication Entries list, add an entry. Your entry must be a valid login for your database, one that is able to create tables and add data as shown in this article. For this example, we'll use a sample login that's part of the default Oracle install. You may need to use a different login with your particular install.
Oracle JAAS authentication entry settings
|User ID
Add JAAS authentication entry dialog
For this example, the server configuration must include a JDBC data source registered in JNDI as
Its JDBC provider will be accessed as an Oracle XA database.
First, we need to create a JDBC provider that describes how to access an Oracle XA database. In the server configuration editor, switch to the Data Source page. In the JDBC provider list, add a provider with the settings shown below. The name can be anything; we'll use the provider type.
Oracle JDBC provider settings
|JDBC Provider type
Oracle JDBC Driver (XA)
Oracle JDBC Driver (XA)
|Implementation class name
|Class path
Create a JDBC provider dialog
Second, create a JDBC data source that will provide access to our specific Oracle XA database. Select the Oracle provider we
just created, and then add a data source with the settings shown below. The name can be anything. The JNDI name is the unique
identifier your code will use to lookup the data source; this article's example code uses
jdbc/OracleXADS. For the
container-managed authentication alias, choose the JAAS authentication entry we created earlier.
URL is a required resource property; specify the one for accessing your database.
Oracle JDBC data source settings
|JDBC Provider type
Oracle JDBC Driver (XA), version 5.0
Example Oracle XA Data Source
|JNDI name
|Helper class
|Authentication alias
Create a JDBC data source dialog
The JDBC provider we created earlier looks for its JAR file in the directory specified by the variable
The variable must be set to the proper directory, but WebSphere Studio does not know where you the Oracle client is installed, so you must specify this directory.
In the Server Configuration Editor, switch to the Substitution variables page. Under Node settings is a list of defined variables.
Find the one for Oracle and set it to the directory containing the
ojdbc14.jar file.
Oracle defined variables (for nodes) settings
Edit Oracle JDBC driver path variable dialog
You have now configured the server with an Oracle XA JDBC data source. Save the server configuration.
Although you have now configured your test server with an Oracle XA JDBC data source, you may also need to configure the Oracle database itself to support XA transactions. Your Oracle DBA can help you determine if further configuration is necessary and can help you perform the steps. Later in this article, we'll discuss the errors you get if your Oracle database is not configured for XA, and how to configure it.
Configure a DB2 XA data source
This example also includes a DB2 XA data source. The configuration settings for a DB2 data source are very similar to those for an Oracle data source.
First, define a JAAS identity capable of logging into your database. In this example, we've set up one named DB2.
DB2 JAAS authentication entry settings
|User ID
Second, we need to create a JDBC provider for DB2 XA data sources.
DB2 JDBC provider settings
|JDBC Provider type
DB2 Universal JDBC Driver Provider (XA)
DB2 Universal JDBC Driver Provider (XA)
|Implementation class name
|Class path
Third, we need to create a DB2 XA data source with the JNDI name
jdbc/DB2XADS. We'll use the JAAS identity from
step 1. Whereas an Oracle data source needs a URL string for accessing the database, a DB2 data source
just needs the name of the database, in this case, "sample."
DB2 JDBC data source settings
|JDBC Provider type
DB2 Universal JDBC Driver Provider (XA), version 5.0
Example DB2 XA Data Source
|JNDI name
|Helper class
|Authentication alias
Fourth, we need to specify the path where the DB2 drivers are installed, which is the directory that contains the
file. Also, verify the default value of the other variable in the data source's class path.
DB2 defined variables (for nodes) settings
You have now configured a DB2 XA data source registered as
jdbc/DB2XADS. Save the server configuration.
Configure a JMS provider
To demonstrate an XA transaction, while we're at it, let's also add in a JMS resource. A simple one to use that also has full XA capabilities is the JMS simulator built in to Application Developer. Your WebSphere applications that use DB2 and or Oracle XA may use resources other than JMS, but it is required for this example.
In the server configuration editor, switch to the JMS page. Under JMS Server Properties, add the queue name
. Under JMS Provider, select MQ Simulator for Java Developers.
For this example, the server configuration must include two JMS resources, a queue connection factory named
jms/XAExampleQCF and a queue named
jms/XAExampleQ. On the server configuration editor's JMS page, in the
WASQueueConnectionFactories entries list, add a new queue connection factory with the settings shown below. Be sure that XA
support is enabled; that's the whole point of this example.
WAS queue connection factory settings
|JNDI Name
|Enable XA Support
|True (checked)
Add WAS Queue Connection Factory Dialog
In the WASQueue entries list, add a new queue with these settings:
WAS queue settings
|JNDI Name
Add WAS Queue Dialog
Save the server configuration.
You are now through configuring the server. It has a data source for accessing Oracle through XA, and a JMS queue with a queue connection factory that supports XA transactions. You can even run the server at this point. It doesn't contain any applications, but you can verify that it starts without errors and binds the JDBC and JMS resources in JNDC that we configured for this server. A successful startup will contain JMS- and JDBC-specific messages like these:
JMSMQJDProvid A MSGS0656I: Starting the MQJD JMS Provider JMSMQJDProvid A MSGS0650I: MQJD JMS Provider open for business ResourceMgrIm I WSVR0049I: Binding XAExampleQCF as jms/XAExampleQCF ResourceMgrIm I WSVR0049I: Binding XAExampleQ as jms/XAExampleQ ResourceMgrIm I WSVR0049I: Binding Example Oracle XA Data Source as jdbc/OracleXADS ResourceMgrIm I WSVR0049I: Binding Example DB2 XA Data Source as jdbc/DB2XADS CacheServiceI I DYNA0048I: WebSphere Dynamic Cache initialized successfully.
Optional: Import the server configuration
You really should practice setting up the server configuration as described so far. But if you're unsuccessful and still wish to run the example application described below, you can import the configuration instead.
To start, download and unzip the example file. It contains a directory called
XA Example Server.wsc; this is a
WebSphere version 5.1 server configuration.
To import a server configuration, you first need to create a server, which is described at the beginning of this article. Make sure it is a WebSphere version 5.1 Test Environment (available in Application Developer version 5.1.1), since the configuration is for version 5.1.
Also, it helps to be able to see both the list of servers and the list of configurations. In the Server Configuration view of the Server perspective, select View => Advanced from the Menu (e.g., down triangle) button.
Advanced Server Configuration View Menu
Next, import the server configuration by following these steps:
- From the Studio menu bar, choose File => Import.
- The Import wizard opens on its Select page. Select Server Configuration and click Next.
- The wizard switches to its Import a Server Configuration page.
- At the Configuration Name field, enter some name that is different from the name of the server you just created, such as "Imported Configuration."
- The Folder field will default to the name of your servers project, which is usually called "Servers."
- For the Configuration Type, select WebSphere version 5.1 => Server Configuration.
- In the Location field, click Browse and select the
XA Example Server.wscfile you downloaded.
- Click Finish to import the server configuration. Your Server Configuration view will now list the new configuration with the name you specified.
Import a server configuration dialog
Now we need to switch the server you created to use the server configuration you just imported. In the Server Configuration view, select the server, pop up the context (e.g., right mouse button) menu, select Switch configuration, and select the configuration you imported.
Open the server configuration editor for your server and you'll see that it now has the settings for the JDBC and JMS resources described earlier. (If you don't see these settings, make sure to switch your server to the imported configuration.)
Start the server and you'll see the server startup log shown earlier.
Set up the example application
This article includes a simple J2EE application that you can download, import into Application Developer, and run. It will execute an XA transaction using the JDBC and JMS resources you configured earlier.
To start, download and unzip the example file. It contains an Enterprise Archive (EAR) file named
XAExampleEAR.ear. Follow these steps to import it into your WebSphere Studio workspace:
- From the Studio menu bar, choose File => Import.
- The Import wizard opens on its Select page. Select EAR file and click Next.
- The wizard switches to its Enterprise Application Import page. At the EAR File field, click Browse and select the
XAExampleEAR.earfile you downloaded. The project name will default to
- Click Finish to import the EAR. Your workspace will now contain three projects named
XAExampleEJB, and
XAExampleEJB project, not too surprisingly, contains EJBs, so you must generate their deployment code. Select
XAExampleEJB project, pop up the context (e.g., right mouse button) menu, and select Generate =>
Deployment and RMIC code. Use the dialog to generate the code for the
XAExampleSession bean. Application
Developer will generate new classes with names like
EJSLocalStatelessXAExampleSession_5a0991c7. These are the concrete classes
with work with the WebSphere Application Server EJB container to make the example EJBs fulfill all of the qualities defined by the EJB specification.
You must also add the EAR project to the test server. This is analogous to deploying an EAR, but more flexible because as you modify the EAR's code, you don't have to redeploy the EAR to use the new code. Instead, you can simply restart the server or restart the EAR project within the running server and start testing your code changes.
To add the EAR project to the test server, select the server in the Server Configurations view, pop up the context (e.g. right
mouse button) menu, and select Add and remove projects. In the dialog, add
XAExampleEAR to the list of
configured projects. In the Server Configuration view, expand the imported configuration and you'll now see that the EAR is part of the configuration.
The download contains a file named
XAExampleDB.sql, which creates a database table named
XA_EXAMPLE. For Oracle, run this file in SQL*Plus to create the table:
SQL> @C:\temp\XA Example Article\XAExampleDB.sql DROP TABLE XA_EXAMPLE * ERROR at line 1: ORA-00942: table or view does not exist Table created.
For DB2, run the file in the DB2 command line processor:
C:\db2\SQLLIB\BIN>db2 -tvf C:\temp\XA Example Article\XAExampleDB.sql DROP TABLE XA_EXAMPLE DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0204N "DB2.XA_EXAMPLE" is an undefined name. SQLSTATE=42704 CREATE TABLE XA_EXAMPLE ( TEXT VARCHAR(256) NOT NULL ) DB20000I The SQL command completed successfully.
Example code
The example application is simple and consists of two classes:
XAExampleSessionBean-- A session EJB that performs an XA transaction.
XAExampleServlet-- A servlet that invokes the EJB.
The session bean's public method,
persistAndSend(String), writes the argument to the two JDBC tables (DB2 and
Oracle) and a JMS message. This functionality alone is not a very useful application; however, since JDBC and JMS are transactional resources,
performing all three tasks requires an XA transaction. The distributed (two-phase) transaction ensures that all three tasks are performed successfully.
If one task cannot commit successfully, the others are rolled back such that none of the tasks are performed. This maintains consistency between the two resources.
publicvoid persistAndSend(String data) throws Exception { try { DataSource oracleDS = getDataSource("java:comp/env/jdbc/OracleXADS"); persist(data, oracleDS); DataSource db2DS = getDataSource("java:comp/env/jdbc/DB2XADS"); persist(data, db2DS); QueueConnectionFactory factory = getQueueConnectionFactory("java:comp/env/jms/XAExampleQCF"); Queue queue = getQueue("java:comp/env/jms/XAExampleQ"); send(data, factory, queue); } catch (Exception e) { e.printStackTrace(); this.getSessionContext().setRollbackOnly(); throw e; } }
The method performs three steps:
- Persists the data using the data source named
- Persists the data using the data source named
- Sends the data in a JMS message to a queue named
If anything goes wrong, the catch block will catch the exception, mark the transaction for rollback, and rethrow the exception. Just for completeness, here's the rest of the code for implementing the session bean:
privatevoid persist(String data, DataSource datasource) throws SQLException { System.out.println("Adding a new database row containing: " + data); Connection connection = null; try { connection = datasource.getConnection(); PreparedStatement statement = connection.prepareStatement( "INSERT INTO XA_EXAMPLE (TEXT) VALUES (?)"); statement.setString(1, data); statement.execute(); System.out.println("Successfully added row: " + data); } finally { if (connection != null) connection.close(); } } privatevoid send(String data, QueueConnectionFactory factory, Queue queue) throws JMSException { System.out.println("Sending a message containing: " + data); QueueConnection connection = null; try { connection = factory.createQueueConnection(); QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); QueueSender sender = session.createSender(queue); TextMessage message = session.createTextMessage(data); sender.send(message); System.out.println("Successfully sent message: " + data); } finally { if (connection != null) connection.close(); } } private DataSource getDataSource(String jndiName) throws NamingException { return (DataSource) this.getJNDIObject(jndiName); } private QueueConnectionFactory getQueueConnectionFactory(String jndiName) throws NamingException { return (QueueConnectionFactory) this.getJNDIObject(jndiName); } private Queue getQueue(String jndiName) throws NamingException { return (Queue) this.getJNDIObject(jndiName); } private Object getJNDIObject(String jndiName) throws NamingException { Context root = new InitialContext(); return root.lookup(jndiName); }
This is standard code for using JDBC and JMS. There isn't even any code to define a transaction or make it XA. But because the code is invoked by the WebSphere Application Server's EJB container as a single public EJB method, the container automatically runs the code in a transaction. The container would normally use a simple (e.g. single phase) transaction, but it automatically detects when the second transactional resource is updated and converts the transaction to an XA transaction. As part of doing so, the container informs the resources that it is coordinating an XA transaction for them and to participate accordingly. All of this behavior is achieved automatically, without any additional code for the developer to write, simply by implementing the code in an EJB.
Run the example application
Ideally, while you're reading this article, you should also be performing these steps in Application Developer. If you have been, you have now configured a test server and installed the example EAR.
You can now start the server to run the application. In the Server perspective, go to the Servers view. Select your server and click Start to run it. If the server starts correctly, you'll see a startup log in the console similar to this:
JMSMQJDProvid A MSGS0656I: Starting the MQJD JMS Provider JMSMQJDProvid A MSGS0650I: MQJD JMS Provider open for business ResourceMgrIm I WSVR0049I: Binding XAExampleQCF as jms/XAExampleQCF ResourceMgrIm I WSVR0049I: Binding XAExampleQ as jms/XAExampleQ ResourceMgrIm I WSVR0049I: Binding Example Oracle XA Data Source as jdbc/OracleXADS ResourceMgrIm I WSVR0049I: Binding Example DB2 XA Data Source as jdbc/DB2XADS CacheServiceI I DYNA0048I: WebSphere Dynamic Cache initialized successfully. . . . ApplicationMg A WSVR0200I: Starting application: XAExampleEAR EJBContainerI I WSVR0207I: Preparing to start EJB jar: XAExampleEJB.jar EJBContainerI I WSVR0037I: Starting EJB jar: XAExampleEJB.jar WebContainer A SRVE0169I: Loading Web Module: XAExampleWeb. WebGroup I SRVE0180I: [XAExampleWeb] [/XAExampleWeb] [Servlet.LOG]: JSP 1.2 Processor: init WebGroup I SRVE0180I: [XAExampleWeb] [/XAExampleWeb] [Servlet.LOG]: SimpleFileServlet: init WebGroup I SRVE0180I: [XAExampleWeb] [/XAExampleWeb] [Servlet.LOG]: InvokerServlet: init ApplicationMg A WSVR0221I: Application started: XAExampleEAR
Now we can run the application. In your favorite web browser, invoke this URL:
This invokes our
XAExampleServlet servlet with a single parameter whose name is
data and whose value
is "hello world." If everything runs successfully, the browser will display this result:
Just persisted and sent data: hello world
Likewise, in the server console, you'll see some status messages like these:
SystemOut O Adding a new database row containing: hello world SystemOut O Successfully added row: hello world SystemOut O Adding a new database row containing: hello world SystemOut O Successfully added row: hello world SystemOut O Sending a message containing: hello world SystemOut O Successfully sent message: hello world
If all of this works for you, congratulations, you've successfully run an application that uses an XA transaction spanning JDBC and JMS resources.
Troubleshooting the example application
Several potential problems can prevent you from running the example successfully. Two of them are common mistakes in deploying the example and are easy to fix. Two others have to do with configuration problems in the Oracle database and require an Oracle DBA to fix.
The following sections list the problems that can occur, show the exceptions displayed in the Application Developer console, give a brief description of why the problem occurred, and explain what to do to fix each problem.
ClassNotFoundException: EJSStatelessXAExampleSessionHomeBean
When starting the server, when the application starts successfully, you get these messages:
ApplicationMg A WSVR0200I: Starting application: XAExampleEAR EJBContainerI I WSVR0207I: Preparing to start EJB jar: XAExampleEJB.jar EJBContainerI I WSVR0037I: Starting EJB jar: XAExampleEJB.jar WebContainer A SRVE0169I: Loading Web Module: XAExampleWeb. WebGroup I SRVE0180I: [XAExampleWeb] [/XAExampleWeb] [Servlet.LOG]: JSP 1.2 Processor: init WebGroup I SRVE0180I: [XAExampleWeb] [/XAExampleWeb] [Servlet.LOG]: SimpleFileServlet: init WebGroup I SRVE0180I: [XAExampleWeb] [/XAExampleWeb] [Servlet.LOG]: InvokerServlet: init ApplicationMg A WSVR0221I: Application started: XAExampleEAR
However, you may instead get an error like this:
ApplicationMg A WSVR0200I: Starting application: XAExampleEAR EJBContainerI I WSVR0207I: Preparing to start EJB jar: XAExampleEJB.jar BeanMetaData E CNTR0075E: The user-provided class "com.ibm.example.xa.EJSStatelessXAExampleSessionHomeBean_5a0991c7" needed by the EnterpriseBean could not be found or loaded. EJBContainerI E WSVR0209E: Unable to prepare EJB jar XAExampleEJB.jar [class com.ibm.ws.runtime.component.DeployedModuleImpl], enterprise bean com.ibm.etools.ejb.impl.SessionImpl(XAExampleSession) (transactionType: Container, sessionType: Stateless) java.lang.ClassNotFoundException: com.ibm.example.xa.EJSStatelessXAExampleSessionHomeBean_5a0991c7 at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:351) at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:261) at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code)) at com.ibm.ejs.container.BeanMetaData.loadExistedClass(BeanMetaData.java:2573) at com.ibm.ejs.container.BeanMetaData.<init>(BeanMetaData.java:888) at com.ibm.ws.runtime.component.EJBContainerImpl.createBeanMetaData(EJBContainerImpl.java:980) . . . DeployedAppli W WSVR0206E: Module, XAExampleEJB.jar, of application, XAExampleEAR.ear/deployments/XAExampleEAR, failed to start ApplicationMg W WSVR0101W: An error occurred starting, XAExampleEAR ApplicationMg A WSVR0217I: Stopping application: XAExampleEAR ApplicationMg A WSVR0220I: Application stopped: XAExampleEAR
The error is
ClassNotFoundException, where the missing class is
com.ibm.example.xa.EJSStatelessXAExampleSessionHomeBean_5a0991c7. It occurred while attempting to start the EJB jar
What this indicates is that you forgot to generate the EJB code, so the container cannot find the generated
class for the
XAExampleSession bean. To fix this problem, generate the Deployment and RMIC code for all of
the beans in the indicated EJB project, then restart the server.
SQLException: Table or view does not exist
When running the example for the first time, you may get an error that looks like this:
WSRdbDataSour I DSRA8203I: Database product name: Oracle WSRdbDataSour I DSRA8204I: Database product version: Personal Oracle9i Release 184.108.40.206.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 220.127.116.11.0 - Production WSRdbDataSour I DSRA8205I: JDBC driver name : Oracle JDBC driver WSRdbDataSour I DSRA8206I: JDBC driver version : 22.214.171.124.0 WebGroup E SRVE0026E: [Servlet Error]-[ORA-00942: table or view does not exist ]: java.sql.SQLException: ORA-00942: table or view does not exist at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093) at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047) at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589) at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:656) at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.execute(WSJdbcPreparedStatement.java:386) at com.ibm.example.xa.XAExampleSessionBean.persist(XAExampleSessionBean.java:45) at com.ibm.example.xa.XAExampleSessionBean.persistAndSend(XAExampleSessionBean.java:30) at com.ibm.example.xa.EJSLocalStatelessXAExampleSession_5a0991c7.persistAndSend (EJSLocalStatelessXAExampleSession_5a0991c7.java:23) at XAExampleServlet.persistAndSend(XAExampleServlet.java:44) at XAExampleServlet.doGet(XAExampleServlet.java:28) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) . . .
The error is
SQLException, error code
ORA-00942; specifically, an expected database table or view
does not exist. However, the error does not tell you which table or view is missing. The stack trace does show that the error
occurred in the method
XAExampleSessionBean.persist, in line 45 of the
.java file. Click on that line
of the stack trace and the editor takes you to the
execute line of this code:
PreparedStatement statement = connection.prepareStatement("INSERT INTO XA_EXAMPLE VALUES (?)"); statement.setString(1, data); statement.execute();
So the problem occurred while inserting a row into the
XA_EXAMPLE table.
What this indicates is that you forgot to run the SQL file that creates the database tables. To fix this problem, run the SQL file:
SQL> @C:\workspace\XAExampleEJB\XAExampleDB.sql
Now run the example again.
OracleXAException: XAER_RMERR (Internal XA Error)
When running the example for the first time, you may get an error that looks like this:
WSRdbDataSour I DSRA8203I: Database product name : Oracle WSRdbDataSour I DSRA8204I: Database product version : Personal Oracle9i Release 22.214.171.124.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 18.104.22.168.0 - Production WSRdbDataSour I DSRA8205I: JDBC driver name : Oracle JDBC driver WSRdbDataSour I DSRA8206I: JDBC driver version : 18.104.22.168.0 WSRdbXaResour E DSRA0304E: XAException occurred. XAException contents and details are: The XA Error is : -3 The XA Error message is : A resource manager error has occurred in the transaction branch. The Oracle Error code is : 65535 The Oracle Error message is: Internal XA Error The cause is : null. WSRdbXaResour E DSRA0302E: XAException occurred. Error code is: XAER_RMERR. Exception is: <null> RegisteredRes E WTRN0078E: An attempt by the transaction manager to call start on a transactional resource has resulted in an error. The error code was XAER_RMERR. The exception stack trace follows: oracle.jdbc.xa.OracleXAException at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1157) at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:295) at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start(WSRdbXaResourceImpl.java:927) at com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1267) at com.ibm.ws.Transaction.JTA.JTAResourceBase.start(JTAResourceBase.java:164) at com.ibm.ws.Transaction.JTA.RegisteredResources.startRes(RegisteredResources.java:389) at com.ibm.ws.Transaction.JTA.TransactionImpl.enlistResource(TransactionImpl.java:1903) at com.ibm.ws.Transaction.JTA.TranManagerSet.enlist(TranManagerSet.java:494) . . .
The error is that the transaction manager was unable to convert the transaction to an XA transaction. Specifically, Oracle
returned an error
XAER_RMERR, error code number 65535.
ORA-65535 is not a valid error code and
XAER_RMERR essentially means that something went wrong with XA.
What this indicates is that your Oracle database is not configured to support XA transactions. Therefore, when the WebSphere Application Server transaction manager instructs the Oracle transaction manager to participate in this XA transaction, Oracle cannot comply and throws this exception.
The solution is to run two scripts that are included in the Oracle install. This will likely need to be performed by your Oracle DBA,
since you must be logged into Oracle as
SYSOPER or
in order to have the necessary permissions for these scripts to work. The scripts are:
- directory:
- file:
- file:
- file:
initxa.sql script configures the database for XA. Once it runs successfully, your database is configured for XA.
The script may run successfully the first time you try. Unfortunately, it probably will not run successfully because some of
the database's memory spaces are too small. To fix this, run the
initjvm.sql script. It will probably fail too, but
in doing so it will indicate which parameters need to be adjusted. The parameters are stored in this file:
- directory:
- file:
- file:
This table shows two parameters that typically need to be increased. Your particular database configuration may require adjusting different parameters.
Oracle Initialization Values
initjvm.sql runs successfully, then
initxa.sql should run successfully. The Oracle database
will need to be restarted for the changes to take effect. You can then restart the WebSphere Studio test server and retry running the example.
XAException: XAER_RMERR (xa_recover)
You may be able to run the example just fine, at least after fixing a few problems. You may develop an application that uses XA transactions with Oracle and be able to run it fine. But one day you may find that you cannot start your WebSphere Application Server. This will probably occur after crashing WebSphere and/or Oracle without shutting down the servers properly. The WebSphere startup error looks like this:
SecurityCompo I SECJ0243I: Security service started successfully SecurityCompo I SECJ0210I: Security enabled false WSRdbXaResour E DSRA0304E: XAException occurred. XAException contents and details are: The cause is : null. 36185510 WSRdbXaResour E DSRA0302E: XAException occurred. Error code is: XAER_RMERR. Exception is: <null> XARminst E WTRN0037W: The transaction service encountered an error on an xa_recover operation. The resource was J2CXAResourceInfo : cfName = XA Example Data Source configProps = [Deployed Resource Adapter Properties] OptionC_authDataAlias java.lang.String scott UserName java.lang.String scott Password java.lang.String ******** TransactionResourceRegistration java.lang.String dynamic InactiveConnectionSupport java.lang.Boolean true secureMode boolean true . . . The error code was XAER_RMERR. The exception stack trace follows: javax.transaction.xa.XAException at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:626) at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:672) at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:130) at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:673) at com.ibm.ws.Transaction.JTA.RecoveryManager.resync(RecoveryManager.java:1369) at com.ibm.ws.Transaction.JTA.ResyncThread.run(RecoveryManager.java:1440) ApplicationMg A WSVR0200I: Starting application: IBMUTC
The error is that the transaction manager was unable to perform an XA recover operation. Specifically, Oracle returned an
error XAER_RMERR. As with the last error,
XAER_RMERR indicates that something went wrong with XA.
What this indicates is that WebSphere did not close its connection with Oracle properly, probably because either or both
servers were not shut down properly; they crashed. Now that WebSphere Application Server is attempting to reestablish the
connection, Oracle needs to rollback any transactions that were in progress, but the Oracle user that WebSphere is using to log into
the database (
scott, in this example) cannot perform the recovery.
The solution is to give the Oracle user permission to perform the recovery, specifically to access the internal Oracle tables
used to manage recovery. In SQL Plus as
SYSOPER or
SYSDBA, run this command:
grant select on DBA_PENDING_TRANSACTIONS to PUBLIC
If you don't want to grant this permission to all users, specify only the user listed in the error (in this example, scott). Then restart the database, and this time you should be able to successfully restart the WebSphere server.
This article has shown you how to create a WebSphere Studio Application Developer test server configured with a JDBC data source for Oracle XA, a data source for DB2 XA, and a JMS queue connection factory and queue. It described a simple session EJB method that updates both JDBC and JMS data, necessitating an XA transaction. You've seen what this simple application looks like when it runs correctly, as well as some of the errors that can occur and how to fix them. With this knowledge, you can now write WebSphere Java applications that use XA transactions.
The author would like to thank Tom Alcott, Keys Botzum, Roland Barcia, Bill Hines, and Paul Ilechko for their help in developing this article.
Questions from users
Question 1: Hi Bobby -- your article is very useful and I was looking desperately to some information it contains a few months ago when I tried to make this work with Oracle. I just wanted to mention that in our case, it didn't work without the property "transactionBranchesLooselyCoupled" set to "true" in the datasource. Best regards, Daniel
Response from author: Daniel -- you are correct xxxxxxxxxxxxxxx
Downloadable resources
- PDF of this content
- Code sample (XA_example_article.zip | 43 KB)
Related topics
- IBM WebSphere: Deployment and Advanced Configuration by Roland Barcia, et. al., Addison-Wesley 2004
- WebSphere Studio Application Developer V5 Programming Guide, by Ueli Wahli, et. al., IBM Redbook SG246957
- "Transactions in J2EE" by Jan Smolenski and Peter Kovari, IBM Redpaper REDP3659
- "Distributed Transaction Processing: The XA Specification" by The Open Group, February 1992, UK ISBN 1-872630-24-3
- "Transaction Service Specification" (CORBA OTS) by the Object Management Group


text:
is tihs a wordpress theme?
No its not WP
any theme that looks like that one?
Its quite bespoke given the features and some of the way in which it works. You could probably create something pretty easily using a one page theme (take you pick there are hundreds) and then have an offsite page for the blog e.g. a separate page from the one page feed (like the "factories" grid in this one), and the same for pricing.
The search function in the factories would require a bit more work but again nothing terrifying. It depends how "creative" you want to be on the one page side of things like the main page in your link.
It would definitely cost more to create something on these lines but a freelancer with a creative mind could easily come up with something else using a one page theme from here as the building block

subset: commoncrawl


text:
#"Conor's 2012 @Raspberry_Pi Christmas Gift Guide"
This post was prompted by @mollydot asking me last night on Twitter what accessories make sense if you are buying a Raspberry Pi as a Christmas Gift and@jkeyesrightly suggesting that a post with links would be useful.
I really think this Christmas could be a lovely replay of 1982 for a lot of people, like me, who got their first home computer that year. You could have so much fun on Christmas Day messing with the RPi rather than falling asleep in front of the fire. Just don't fight over who gets the telly when Doctor Who is on.
Whilst the bare-bones nature of the Raspberry Pi is wonderful, it is unusable out of the box unless you are a house with smartphones,digitalcameras and existing PCs already that you can raid for components.
What you want to avoid is a repeat of me that December in 1982 with my brand-new 16K ZX Spectrum which didn't work on our Nordmende TV until two weeks later when the RTV Rentals guy came and replaced the TV Tuner. Two weeks typing Beep 1,2 to make sure it wasn't broken.
For most parts, check the list of verified compatible devices here. This is what you need:
- The Raspberry Pi itself
- You can get it online from Farnell Element 14. Also most of the accessories I mention below. They are quoting a 3 week delivery time so get your skates on.
- And available online from RS Components. They have lots of accessories too.
- Orrrrr, you can skip everything I have written below and just get theMaplin Starter Kitfor Raspberry Pi. Unusually for them, it's actually decent value and you know all of the components have been tested for compatibility. There weren't any in Blackpool in Cork the last time I was there so ring-ahead or order online.
- An SD Card
- I got these very cheap 16GB ones from 7DayShop in Jersey but the casing on one has shattered after very little use. They have branded ones which should have better quality plastic.
- Micro-SD cards in an adapter work fine too.
- Get the fastest one you can. Class 10 for full SD works great as does Class 6 on MicroSD.
- Any size from 4GB up should be fine initially.
- A Micro-USB phone charger
- I'm currently using the one from my HTC Sensation.
- Anything above 700mA should be fine but that excludes most cheap 500mA chargers that come with Chinese electronics.
- I've had success with a some of the cheap ones from DX.com in China but many of the so-called 2 Amp ones can barely do 1 Amp so it might be best to avoid. Also, be warned, delivery times from DX can range from a week to many months.
- I was very surprised to see an entire shelf of power supplies in a small Maplin in London but not one Micro-USB charger. As a place where a lot of people go to get emergencyreplacementsfor things, they should surely have tons of these?
- TV Cables
- If the person you are buying for has an LCD/Plasma TV then any HDMI cable will be fine. I have used ones from DX and Lidl with no problems.
- If they have a older CRT TV then they will need a video cable with RCA at both ends and an audio cable with 3.5" headphone jack at one end and RCA at the other end. If the TV takes RCA then that's all they need.
- If the TV only takes SCART, then you need an RCA to SCART adapter. Most TV shops have these. Maplin definitely do.
- If they have a monitor with DVI then there are HDMI-DVI adapters. Neither of theadapterson DX worked for me. See this page for a list of compatible adapters.
- If they have a monitor with VGA then this adapter on eBay may work. Note that it works for me on two monitors here but totally failed on a projector at an event during the summer.
- USB Keyboard and Mouse
- I haven't found a wireless one which doesn't work. Lidl and Aldi both great for these at the right time of the year. Otherwise anywhere online or PC World.
- Not all wired keyboards will work as they may draw too much current. I have one roll-up rubber one (don't ask) which shuts the RPi down when I connect it.
- I found a dirt-cheap Microsoft wired Keyboard/Mouse for about 15 last year in Dixons
- Powered USB Hub
- USB remains a very frustrating experience on the Raspberry Pi. Unlike a PC, it seems to be a crap-shoot as to whether something will work on it or not. The problem is the tiny amount of power the two USB ports can provide (150mA compared to 500mA on most PCs) and some ongoing problems in the drivers.
- The best way to avoid this is to get a USB hub that can be externally powered and connect all devices to that. Unfortunately, many of the dirt cheap ones out there that have a power connector don't actually work with power connected.
- This extremely cheap hub($5!) that I got on DX last week seems to be working really well so far. It doesn't come with a power supply but accepts one. You'll have to find a 5V one yourself with that smaller size of power jack.
- To be absolutely sure, just check this list of compatible hubs.
- If you continue to have problems then you may be forced (as I was) to hack the USB cable from the hub to the RPi and disconnect the power lines so that the Hub isn't sending power back up to the RPi
- Wireless Adapter
- Whilst the RPi has an Ethernet port, it's not really that useful for many people whose broadband routers are in the hall. One of our RPis is wired but that's because we run GigE cabling everywhere.
- I have a ton of Wifi adapters collected over the years. Most of them work on the RPi.
- I'm currently using some random Wireless-G one to stream a webcam internally.
- Again, check the list of compatible ones here
- And again, connect it using the hub to avoid power problems
- The current version of Raspbian for Raspberry Pi comes with a nice Wifi GUI config tool to make setup very easy indeed.
- The Raspberry Pi User Guide
- Get it here on Amazon
- Because I still have my ZX Spectrum manual and still remember drawing my first circle on the screen using the instructions in it.
- A nice case
- If you are feeling very generous.
- Some lovely ones on the Adafruit site in New York
- And this awesome Pibow in the UK


text:
Thursday, May 14, 2009
Some Thoughts On Walleye Fishing
Walleyes may be the favorite game fish of most state anglers because they are plentiful in countless lakes and streams in both peninsulas, offer superb eating and are fun to catch. Sometimes, the hardest thing about catching walleyes is finding them.
My travels over many years of rooting out outdoor stories has taken me into almost every nook and cranny of Michigan, and it's surprising just how many of these spots hold walleyes. Just think of it this way: walleyes are found in big and small lakes, the Great Lakes, and in numerous rivers and no one, regardless of where you live, is very far from good walleye habitat.
One question frequently asked is where anglers should go to find the best walleye hot spots. The answer can be frustratingly complex or very simple, depending on your point of view.
These fish are found in many locations around the state and in both peninsulas. The more difficult answer is to pick a few key spots. I put this question to some expert walleye fishermen, and everyone had a ready answer that outlined their favorite walleye hole.
"Saginaw Bay from Bay City to the Charity Islands and from Port Austin to Standish offer some of the greatest walleye action in the country," said tournament angler Gary Bowman of Westland. "Saginaw Bay is capable of producing big fish during all four seasons, and a variety of fishing techniques will produce good catches."
He prefers to troll crankbaits although pulling spinners (nightcrawler harnesses) near bottom also work. A trick he uses is to fish with jigs and bounce them along bottom along drop-offs and in deep holes. Rocky areas can produce quality fish and great action with walleyes of several year classes.
Ron Levitan of Milford said Lake Erie is the finest walleye hole in North America, and that fishing should be good again this year. He considers this lake superb for large, medium and small but legal walleyes.
"Planer boards with Hot-n-Tots are the hot combination during the summer months," Levitan said. "Everyone thinks it's necessary to fish Ohio or Ontario waters during the summer months, but that isn't true. Exploring in Michigan waters can lead to a heavy catch. The trick is to find the fish and get them to turn on. Spoons like the Silver Streak work well off planer boards."
Mark Martin of Twin Lake fishes in walleye tournaments for a living but when he has free time, he fishes Muskegon Lake at Muskegon. The after-dark hours offer prime fishing opportunities during the summer months.
"My technique is to troll a Rapala along rip-rap or drop-offs once the sun goes down," Martin said. "I like this lure and will troll it close to rocks or drop-offs with just enough speed to bring out the action. Walleyes often go on the prowl after sundown, and this is when some of the truly large fish are caught. Ten-pound walleyes are not caught every night but some fish of this size are caught every summer."
Dave Scroppo of Traverse City favors inland lakes. The fishing pressure is less than on downstate waters, and many lakes have a sizable number of fish ranging from lunkers to barely-legal size.
"Two of my favorites are Long Lake near Traverse City and Lake Leelanau near Leland," Scoppo said. "Both have clear water, and anglers must use small lures and light line to be successful. Jigs hopped slowly along bottom near drop-offs, ledges and weed-bed edges work well. Most of the walleyes from both lakes are eating size that measure 15-18 inches but both lakes also produce some larger fish."
Tawas Bay is a hot spot for Bill Olar of Whittemore. He said this Lake Huron area has great potential for producing trophy fish and limit catches.
"I prefer trolling," Olar said. "Any minnow-imitating lure will work although silver or orange colors seem to produce the best results. I try to troll the edges of points or rockpiles from Tawas Point south to AuGres. This area offers a superb spring and early summer fishery, and don't hesitate to try trolling after dark."
Todd Barrows of Iron Mountain rates Little Bay de Noc as the best spot for trophy fish and heavy catches, although many smaller lakes in the area also produce great sport.
"Michigamme Reservoir is a hot spot for jig fishing or trolling, and Winslow Lake in Iron County has some of the finest walleyes in the Upper Peninsula. The Winslow Lake walleye possession limit is zero but these fish are some of the loveliest in the state. My preference is to cast crankbaits or fish jigs along bottom, and every fish landed is a bonus because the scenery is so beautiful. These fish are very darkly colored, and are lovely to look at as they are released into the lake.
Dave Johnson of Martin likes the lower Kalamazoo River during the summer. The twisting and winding river with its deep holes and runs near the river banks provide great walleye habitat.
"I fish the deep holes with a jig-and-minnow rig or troll with shallow-running plugs," Johnson said. "The water is clear, and some big fish can be found. Three- and four-pounders are quite common in the lower holes just before the river meets the lake. It's almost an untapped fishery down here."
There you have it. Some new hot spots to try this year if the price of gas goes down. Sadly, that's not how it works, is it?
{links] Trackbacks • Permalink


text:
Do extra fees really impact a hotel guest's stay? A new J.D. Power and Associates survey indicates that unwelcome fees may be more than just a small annoyance. In fact, extra fees, like bad customer service, put hotel guests in a negative frame of mind — never a good thing when it comes to measuring satisfaction.
According to the North American Hotel Guest Satisfaction Index study, the average guest satisfaction is at 757 (out of a possible high of 1,000). But guests who indicated they had received free Internet were more satisfied (775) than those who were charged for Internet (743).
It seems that for many guests, what they paid (or didn't pay) for Wi-Fi may have colored their entire hotel stay.
So, if Internet was free, their overall hotel experience was better, almost as if free Internet came with rose-colored glasses — what a pretty carpet, isn't that receptionist nice, what cute little shampoo bottles.
But for those forced to pay for their Internet usage, the hotel was simply a disappointment — the carpets seem faded, the receptionists aren't helpful and they'd much rather have free Wi-Fi than stupid little shampoo bottles.
Okay, specific questions about the carpets, receptionists and shampoo bottles weren't in the survey, but you know what I mean.
I hate paying for Internet at a hotel, especially if I'm being charged per hour or more than $20 for a day. It just puts me in a bad mood, and yeah, maybe I do suddenly "realize" that what I first thought of as a pretty aqua blue carpet is actually faded royal blue that hasn't been replaced in years. And the woman at the hotel's front desk who I thought was working hard to help another guest was actually simply ignoring me.
But at hotels where the Internet is free, I'm much more relaxed, happily surprised and willing to give the hotel more leeway. So what if I never use the hotel's shampoo samples? How nice that the hotel isn't stingy and offers that amenity, in addition (of course) to the free Internet.
It's really just a matter of the hotel setting up my mood. Give me something I want (and quite frankly need) for free, and I'm happy. Make me pay for it, and you get a grumpy puss who's looking for something to complain about.
It's really not a new concept. That's why customer service has always been important. Good customer service makes for happy customers, who see the rest of their experience through a positive lens. Bad customer service…
Let's go back to the J.D. Power survey for a moment. Guests with a high opinion of a hotel's staff have an overall satisfaction index of 841, while those with an average or low opinion of staff have overall satisfaction indexes of 673 and 570 respectively. That's a pretty big difference, if you ask me.
So if good customer service is giving guests what they want, and the hotel amenity travelers want most is free Wi-Fi, we can't help but wonder: Why do any hotels still insist on charging for the Internet?
Tips for Better Wi-Fi on the Road
Hidden Hotel Fees
Choosing a Hotel
— written by Dori Saltzman


text:
Editorial: Disclose secret campaign finance
Everybody's watching what's expected to be by far the most expensive presidential campaign in history, and not without a dose of horror. Freed by the Supreme Court from spending limits, all manner of special interests are opening the spigots to buy influence.
MITCH MCCONNELL; Disclose Act is un-American
But the bigger impact might lie elsewhere: down the ballot, where political races get less news media coverage and a few big ad buys can sway a race. Especially worrisome are secret donations, which are proliferating. A corrupting influence in any campaign, secret money is even more dangerous in less expensive races, where it can buy a seat in Congress or a state legislature, without voters knowing who the buyers are or what their agenda is.
Consider the 2010 race for Congress in South Dakota. Rep. Stephanie Herseth Sandlin, a rising Democratic star, and Republican challenger Kristi Noem each spent about $2.1 million to capture the state's lone seat in the House. The American Action Network— a conservative group that isn't required to report donors — swooped in and spent more than $1 million, much of it in the campaign's final weeks to batter Herseth Sandlin with negative ads. In a presidential campaign, $1 million is chump change. In South Dakota, it's a game-changer: Herseth Sandlin lost by fewer than 7,200 votes. Shouldn't South Dakotans at least know where that money came from?
Of course they should. In its controversial 2010 Citizens United ruling, which opened the door for unlimited individual, corporate and union money to flow into politics, the Supreme Court recognized the importance of publicly naming donors, so "citizens can see whether elected officials are 'in the pocket' of so-called moneyed interests."
Instead, the decision has fostered a whole new era of secrecy. Political strategists on both sides of the aisle have formed non-profit "social welfare" groups to escape disclosure requirements. They have names that convey selfless intentions, such as Americans for Prosperity, a conservative group, or the Patriot Majority USA, a liberal one. .
Rate the debate
These groups spent $137 million on the 2010 elections. Not surprisingly, one target was veteran Wisconsin Democratic Sen. Russ Feingold— a champion of campaign-finance reform — who lost his seat. Contributions from the Patriot Majority USA, meanwhile, helped save Harry Reid, the Senate's top Democrat, from defeat.
About Editorials/Debate
Opinions expressed in USA TODAY's editorials are decided by its Editorial Board, a demographically and ideologically diverse group that is separate from USA TODAY's news staff.
Most editorials are accompanied by an opposing view — a unique USA TODAY feature that allows readers to reach conclusions based on both sides of an argument rather than just the Editorial Board's point of view.
How big the impact will be this year is unknown, but guessing low would be unwise, particularly for lower offices. To put it in context, the average amount spent by candidates for Congress in 2010 was just more than $1 million ($1.4 million for winners; half as much for losers) — roughly equal to what American Action Network spent to defeat Herseth Sandlin.
Spending for state and local races is much lower, making them more vulnerable to big-money influence. The average cost of winning a seat in the state legislature in 2010, for instance, ranged from $711,000 in California to a remarkable $773 in New Hampshire.
Citizens United left the public only one way to protect itself from the rising threat: disclosure. At the federal level, this would be achieved by the Disclose Act, which we opposed two years ago because it exempted a number of powerful interest groups. Today's version, scheduled for Senate debate this month, requires that all groups — social welfare, union and business — report all expenditures and all donations more than $10,000. Republicans, whose groups are drawing more money so far, are geared up to kill it.
In states, the situation is worse. A dozen states don't even require independent groups to report, and state watchdog agencies are poorly funded.
The inevitable result is that come November, voters in many closely contested races will make their decisions based on a late flood of ads of dubious credibility paid for by people whose names and motives are unknown. How long it will take Americans to realize they're getting conned and demand disclosure is anyone's guess.
Posted | Updated


text:
How would you landscape around a large tree?
I have a large Maple tree right in the middle of my front lawn. How would you landscape around it to hide the dead grass & large roots within a 3' radius?
Some nice black mulch... or pachysandra. Mulch would be the quickest and cheapest solution.
Nicely suited groundcover would be a nicer looking and long term better solution than mulch. Lower maintenance too.
You might want to update your profile with basic geographic information.
What species of maple, by the way?
Pachysandra is an interesting idea. In fact my neighbor has something similar to this around their large tree too. Thanks for the tip.
I updated my profile per your suggestion, I'm in NE Mississippi. Not sure what species it is, but its big and sucks the life out of the soil :)
Evergreen plants like pachysandra are really a great idea. I did the same with a tree in my Grandparents' yard and it looks great, morever it is easy to maintain and not so expensive. ;)
|All times are GMT -5. The time now is 12:56 PM.
vBulletin Security provided by vBSecurity v2.2.2 (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.
User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.


text:
More Videos...
Dodge magnum SRT8 on dyno
Had a Dyno day at one of the loal shops so I took my new baby there to see what she would do...
Magnum SRT-8 513RWHP / 576 RWTQ
N/A: 453 RWHP/433 RWTQ 75 shot: 513 RWHP/576 RWTQ A Precision Motorsports performance package that has Ported, Polished and Coated heads (Chambers/valves/entire head coated) POWER-3 N/A custom camshaft, Coated Kooks headers, Magnaflow cat-back and our Ported, polished and Coated Intake manifold (Top with dispersant, bottom with heat barrier). He also opted for a little "shot" just in case the competition needed it, which gave him the 513 RWHP/576 RWTQ. Installed and Custom Dyno tuned as well.
Cammed 2007 Dodge Magnum SRT8
Installed and tuned by ditos performance, Arrington Performance st-3a cam. Dyno jet numbers are 458RWHP @6000 RPM. Would've been closer to 470RWHP if taken to @6500 RPM. 438 RWTQ @ 4800 RPM.
Kooks Sr. of KOOKS CUSTOM HEADERS stops by to get the Brand new VORTECH V3 Supercharger Installed on his SRT8 Magnum and brings along his 426 stroked 300c for a Dyno.


text:
'He's been as steady as any veteran has been on the ice. Part of that is playing two seasons in the Finnish Elite League. Another part is working with assistant coach Teppo Numminen. Ristolainen said, "He's a really good coach and he a lot of experience and he knows with things how to do, so he helps me a lot."'
Sabres number one pick has made the team
September 29, 2013 Submitted by
Via: WGR-AM


text:
Hot Rail [LP] - VINYL
- Artist: Calexico
- Release Date: 01/29/2008
Best Buy is dedicated to always offering the best value to our customers. We will match the price, at the time of purchase, on a Price Match Guarantee product if you find the same item at a lower price at a Designated Major Online Retailer or at a local retail competitor's store.Here's how:
- If you find a qualifying lower price online, call 1-888-BEST BUY and direct a customer service agent to the web site with the lower price, or when visiting a Best Buy store, one of our employees will assist you.
- On qualifying products, Best Buy will then verify the current price to complete the price match.
Exclusions apply including, but not limited to, Competitors' service prices, special daily or hourly sales, and items for sale Thanksgiving Day through the Monday after Thanksgiving. See the list of Designated Major Online Retailers and full details.
Cardmember Offers
You need to install Flash Player to hear these tracks.
- El Picador
- Ballad of Cable Hogue
- Ritual Road Map
- Fade
- Untitled III
- Sonic Wind
- Muleta
- Mid-Town
- Service and Repair
- Untitled II
- Drenched
- 16 Track Scratch
- Tres Avisos
- Hot Rail


text:
Exciting news from Give Peas a Chance!
We're growing (almost as fast as your little ones)!
Now, families outside of Hoboken can get a taste of our culinary courses. We're thrilled to announce that we have expanded under a new name, Peasful Kitchen!
Whether you live in NJ or you're located out of state, be sure to check out our baby and toddler food cooking classes as well as a full course catalogue of family meals. Visit our website to learn more!
Talk about a guilt-free night out! Our BYOB (that's bottle, not baby) classes let you enjoy a night out and meet other parents—all while doing something productive for your little one. Parents who take our classes go home with a week's worth of organic meals and snacks they can stick in the fridge or freezer, as well as the recipes and confidence to recreate the same meals at home. And because we know "short order cook" is not your dinnertime goal, we provide tips on how to turn the baby- and toddler-friendly recipes we create into meals your whole family will love. All you need is to bring yourself. We provide the kitchen, equipment, food containers, and (best of all) the clean up! Our classes are held at Hudson Table, a full service cooking school in uptown Hoboken.


text:
Rosedale Park (Down Under)
Primary tabs
Course Details
Course Map
Course Photos
Course Reviews
Although I LOVED this course while playing it prior to my scheduled round at the 2009 World's, my opinion changed slightly when I had to play the course after an evening of rain that poured across the Kansas Plains into Kansas City. I am still in awe of the beauty and even more in awe of the realization that someone actually was able to see and complete a course through such terrain, I love it, but playing the course with the very slippery reality that existed during my round had me fearful of obtaining an injury that could possibly take me out of the game indefinitely. My round was played with a main concern of finishing without injury. What made the round even worse was starting on the hole that has a dropoff directly at the end of the tee pad (tee pad = cliff) and seeing one of the guys on our card nearly fall forward and off of that cliff. We all tried to tell him a run up wasn't necessary but away he went and almost ALL THE WAY, HE WENT. Or maybe he was using that as a technique to distract our attention form our games, it worked with me. Enough said about that, I did love the course as it fits within my short and accurate game. My opinion is that this must be one of the top 20 courses to visit in the USA just from a standpoint of understanding the demands and level of success a Disc Golf Course designer can achieve.
Courses Close By
- Rosedale Park (Top), Kansas City KS US4(1 vote)
- Harmon Park Disc Golf Course, Prairie Village KS US5(1 vote)
- Kessler Park (Cliff Drive), Kansas City MO US5(1 vote)
- Swope Park, Kansas City MO US5(1 vote)
- Blue Valley Short Course, Kansas City MO US0No votes yet
- Blue Valley Park, Kansas City MO US5(1 vote)
- Water Works Park, Kansas City MO US5(2 votes)
- Old Pike Country Club, Gladstone MO US0No votes yet
- Lenexa Disc Golf Course, Lenexa KS US2(1 vote)
- English Landing Park, Parkville MO US0No votes yet


text:
The RCV Performance Ultimate Series 30 CV joint provides unsurpassed strength and reliability for high stress off road applications. The CV joint is used by Championship winning Pro4 teams, and is race prepped and ready to go. The joint is ideal for use on rock crawlers, buggies, sand rails, and other IFS applications. The Ultimate Series 30 CV joint is manufactured with a size 30 RCV housing and features a bearing cage and inner race made with 300M alloy steel for high strength, shock resistance and durability. An isotropic finishing process is used on the housing, bearing cage and race for reduced friction. Plunging versions of the joint are available with up to 28° of articulation. Non-plunging versions with up to 40° of articulation are also offered. The CV joints are available in 35, 40 and 47 spline counts, and can also be configured to your requirements. Housings receive Black Oxide coating as standard, and optional nickel plating is available for extra corrosion resistance. 100% made in the USA, and backed by RCV's unbeatable "No Questions Asked Limited Lifetime Warranty". For more information visit www.rcvperformance.com or call 815.877.7473.
[ News Home ]


text: Why would you say anything? You aren't breaking the law by entering at an entrance that is not posted. If you tell them that their signs are not correct, then you aren't doing anyone a favor. Let a sleeping dog lie and never interrupt your enemy while he's making a mistake.


text:
Location: Palo Alto, CA
Member since 12/28/2012
- 1 total post
- 1 review
Reviews & Stories
Lower Facelift and Neck Lift - Palo Alto, CA
After preparing by working on my facial texture, I had lower facelift and neck lift. The surgery lasted five hours but there was no real pain and I healed very quickly. I was able to go back to works in 2 weeks. It's been five weeks and I look really good. Most people think I lost weight. It was expensive, though, but worth it.Still doing well. Scarring is fading and my face is more like... READ MORE


text:
nebulas is a valid word in this word list. For a definition, see the external dictionary links below.
The word "nebulas" uses 7 letters: A B E L N S U.
No direct anagrams for nebulas found in this word list.
Words formed by adding one letter before or after nebulas (in bold), or to abelnsu in any order:
m - albumens bluesman p - subpanel t - abluents unstable u - unusable
Shorter words found within nebulas:
ab able ables abs abuse ae al alb albs ale ales als an ane anes anus as ba bal bale bales bals ban bane banes bans bas base be bean beans beau beaus bel bels ben bens blae blase blue blues bun buns bus eau el elan elans els en ens es la lab labs lane lanes las lase lea lean leans leas lens leu lube lubes lues luna lunas lune lunes na nab nabe nabes nabs nae ne neb nebs nebula nu nub nubs nus sab sabe sable sae sal sale sane sau saul sea seal sel sen slab slub slue snub suable sub suba sue sun ulan ulans ulna ulnae ulnas un unable unbe uns unseal us usable use usnea
List shorter words within nebulas, sorted by length
Words formed from any letters in nebulas, plus an optional blank or existing letter
Try a search for nebulas in these online resources (some words may not be found):
Wiktionary - OneLook Dictionaries - Merriam-Webster - Google Search
Each search will normally open in a new window.
List all words starting with nebulas, words containing nebulas or words ending with nebulas
All words formed from nebulas by changing one letter
Other words with the same letter pairs: ne eb bu ul la as
Browse words starting with nebulas by next letter
Previous word in list: nebular
Next word in list: nebule
Some random words: oven laari mm fyce age ceanothus cig
This is not a dictionary, it's a word game wordfinder.
- Help and FAQ - Examples - Home
Privacy and Cookies Policy - Share - © Copyright 2004-2017 Morewords.com - 61.174mS


text:
When Giant's Causeway, an odds-on favourite, battled his way to victory in the Juddmonte International Stakes six years ago, he became the first three-year-old to win the Group One feature since Rodrigo De Triano eight years earlier. This is clearly a race where the Classic generation has struggled to make an impact, but Aidan O'Brien, the trainer of Giant's Causeway, could be responsible for another short-priced three-year-old favourite at York next Tuesday.
Dylan Thomas, the impressive winner of the Irish Derby, was one of 10 horses confirmed for the Juddmonte yesterday. He would be a warm order to beat his older rivals but his trainer, who has also left in Aussie Rules, is in no hurry to commit Dylan Thomas to the York contest.
"We'll make a decision at the weekend," said O'Brien yesterday. "I am very happy with Dylan Thomas, and bringing him back to 10 furlongs shouldn't be a problem. He has a high cruising speed." O'Brien did not rule out the possibility of running the colt at both York next week and again in the Irish Champion Stakes on September 9. "We've done it before," he added, referring to Giant's Causeway, who won both races in 2000.
With four winners from just nine runners in the Juddmonte, the resurgent Godolphin stable can never be ignored. Cherry Mix, a Group One winner in Germany last weekend, and Echo Of Light are possibles for trainer Saeed bin Suroor.
"At this stage I would say Cherry Mix is more likely to run but it depends on the weather - he wants rain," said Godolphin's racing manager, Simon Crisford, yesterday. "We would be trying something different with Cherry Mix, who has mostly run over longer trips for us."
Sir Michael Stoute, who has confirmed Maraahel and Notnowcato for the Juddmonte, also has a strong hand in Tuesday's Ladbrokes Great Voltigeur at York with Papal Bull and Stage Gift, both of whom warmed up on the Newmarket gallops yesterday.
Papal Bull and Mark Johnston's Soapy Danger have been installed 5-2 joint-favourites by Ladbrokes, who quote Stage Gift at 7-1. Septimus, one of three Ballydoyle entries, is 100-30 and Red Rocks 6-1. "We've left Septimus, Puerto Rico and Fire And Rain in the Voltigeur and could run all three," said O'Brien.
Stephen Crown, president of the Racehorse Owners' Association, said yesterday he was confident of the Tote's sale to a racing industry consortium going ahead despite Northern Racing's decision to pull out. "I don't see that as a setback at all," he said. "It is difficult to get all parties to agree to everything, but I am very optimistic that racing can buy the Tote. There is no deadline as such, certainly not one that can't be met."


text:
What You Can Do
How You Can Help Migratory Birds
We've got lots of ideas for how you can help and get involved!
Become a Birder
in Four Easy Steps
Don't know where to start? We've got four easy tips that show you don't need to be an expert to become a birder!
Everyday Ways to Help Birds
Check out our list of everyday ways you can help birds. It's easier than you think!
The Best Birding Apps
Need an app that helps you identify birds in the field? Our scientist gives his take on the 7 best birding apps.
Birding on Conservancy Preserves
Our preserves offer wonderful habitat for bird watching, so get outside and get birding!
Birding Bucket List
There are some birds that are worth a little bit of effort to see firsthand. Check out the Conservancy's Birding Bucket List!
The State of Migratory Birds
Every year, this updated report tells us how migratory birds are truly doing. Read the 2015 report (out May 18!) and get involved with helping birds.
Donate to Migratory Birds
Your generous donation will help us protect and conserve vital migratory bird habitat around the globe.


text:
Revisiting historical ocean surface temperatures
Now, we don't yet have the real updates to the HadCRUT data, but we can calculate the difference between mean HadSST3 values and HadSST2, and, making the (rough) assumption that ocean anomalies determine 70% of the global SAT anomaly (that's an upper limit because of the influence of spatial sampling and sea ice coverage), estimate an adjusted HadCRUT index as SAT_new=SAT_old + 0.7*(HadSST3-HadSST2).
Figure: Estimated differences in the global surface air temperature anomaly from updating from HadSST2 to HadSST3. The smoothed curve uses a 21 point binomial filter.
While not perfect, the Independent graphic is shown to have been pretty good – especially for a hand-drawn schematic, while the more dramatic implications from McIntyre or Pielke were large overestimates (as is often the case). The impact on trends is maximised for trends starting in 1946 (a 21% drop in the 1946-2006 case), but are smaller for the 1956-2006 trend (11% decrease from 0.127±0.02 to 0.113±0.02 ºC/decade) (the 50 year period highlighted in IPCC AR4). More recent trends (i.e. 1970 or 1975 onwards) or much longer trends (1900 for instance) are barely changed. For reference, the 1950-2006 trend changes from 0.11±0.02 to 0.09±0.02 ºC/decade – a 17% drop in line with what was inferred from the Independent graphic. Note that while the changes appear to lie within the uncertainties quoted, those uncertainties are related solely to the fitting of an regression line and have nothing to do with structural problems and so aren't really commensurate. The final analysis will probably show slightly smaller changes because of the coverage/sea ice issues. Needless to say the 50% or 30% reductions in trends that so excited the bloggers did not materialize.
In summary, the new HadSST3 analysis is a big step forward in both data coverage and error analysis. The differences are much smaller however than the somewhat exaggerated (and erroneous) blog speculations that appeared in the immediate aftermath of the Thompson et al paper. Those speculations were wrong because of a lack of familiarity with the data (McIntyre confused his buckets), basic mistakes (such as applying ocean-only corrections to global temperature series) and an over-eagerness to overturn established positions. Among the lessons to be drawn should be that science does not travel at the speed of blog and that confirmation biases and desires to be first on the block sometimes get in the way of the rational accumulation of knowledge. Making progress in science takes work, and with big projects like this, patience.
Page 3 of 3 | Previous page


text:
This page consists of resized images so that you can evaluate the overall exposure.
The F11's accurate focusing system has made a good job of this close-up shot, but the damned purple fringing shows up again on the highlights.
The largest production motorcycle engine in the world, the awesome and British-made 2294cc Triumph Rocket III. That's bigger than my car's engine. Oh, and check out the focus or detail or something. I'll be over here drooling.
Colour reproduction has always been a Fujifilm strongpoint. In natural colour mode it is pretty much perfect, and a match for anything else in its class.
More information -
Trusted Reviews is part of the Time Inc. (UK) Ltd Technology Network
Get TrustedReviews' award-winning reviews and advice delivered to your inbox for free!


text:
It was quite the shindig at the Metropolitan Museum of Art last night (May 7) as bevies of beautiful babes showed up for the 2012 Costume Institute Gala "Schiaparelli and Prada: Impossible Conversations."
Malin Akerman showed up at the swanky affair sporting a super sexy black gown as she made nice for the paparazzi.
Drawing out the biggest names in Tinseltown, Paul McCartney and wife Nancy Shevell welcomed a long lineup of star power to the "My Valentine" video premiere in West Hollywood on Friday night (April 13).
Always one of the more well-attended pre-parties, a full slate of celebrities made their way over to the popular Madeo restaurant in Los Angeles, California on Saturday night (February 25).
She's always up for a fun-filled event, and last night (January 11) Ginnifer Goodwin was spotted at the 2012 People's Choice Awards.
Arriving ahead of her duties as one of tonight's (November 9) presenters, Ginnifer Goodwin was spotted on the red carpet at the 2011 Country Music Association Awards.
The "Something Borrowed" beauty happily smiled and waved to her fans before heading inside the Bridgestone Arena in Nashville, TN to partake in the annual country showcase.
Sure to be a spectacular showcase, the stars of country music are all set to put forth the 45th running of the annual Country Music Association Awards.
Sure to tug at your heartstrings, the trailer for the Jennifer Aniston, Demi Moore and Alicia Keys directed Lifetime movie "Project Five" has been released.
Unable to make the lifelong commitment to one another, Ginnifer Goodwin and Joey Kern have called off their engagement while ending their relationship.
A source close to the "Big Love" actress and her now former beau told People magazine that the duo "broke up a few weeks ago."


text:
This star rating is the opinion of the property owner only. A Self-Rated hotel has not been assessed by the AA or Visit Britain, whose official star ratings we use across LateRooms.com.
Newcastle Arms Hotel
50 High Street,, Coldstream, TD12 4AS
Price FromView Rooms
- Excellent
- 3 guest reviews
"Cosy place to stay. Came across this hotel, most impressed overall and will certainly stay here again on my treks from East Anglia to Scotla..."
"Nice room, good breakfast...."
"Sunshine lasted entire weekend in Scotland. A woman travelling alone can feel very safe at The Newcastle Arms. Staff and owner were very fri..."
"Great location and perfect for my needs. Shower could have been better (room 6)..."
"when we arrived we got a very friendly welcome by a young lady behind the bar ,who showed us to our room and can honestly say we could not f..."
About the hotel
Coldstream is a town and a civil parish in the scottish borders area of scotland it lies on the north banks of the river tweed while northunberland in england lies on the south banks with cornhill one mile away is the nearest village in England. Coldstrea
Facilities Show/hide
- Main
- Hotel Non-Smoking Throughout, Tea/Coffee making facilities in each room, Hairdryer in each room, Pets Allowed
- Parking
- Car parking available onsite, Car Parking Available Offsite
- Business
- Wi-Fi Available, Meeting Facilities, In-room Broadband, Wi-Fi Available In Public Areas, Wi-Fi Available In Rooms, Private dining services
- Dining
- Restaurant, Lounge Menu, Bar, Breakfast to go
- In Room Entertainment
- Accessibility
- Disabled Access Public Areas
Useful Info Show/hide
- From 11:00 hours
- By 10:30 hours
- Up to 8 years old
- The price shown is based on the occupancy and dates you have searched for. Prices and availability are subject to change based on the arrival date, number of nights and occupancy searched for. All prices are inclusive of all local taxes.
- Pets are allowed
Customer Reviews
Our reviews are from genuine LateRooms.com customers. We verify that the customer has stayed before leaving a review.
100% would recommend it to a friend
Customer service
Food quality
Room quality
The Newcastle Arms Hotel
Cosy place to stay.
Came across this hotel, most impressed overall and will certainly stay here again on my treks from East Anglia to Scotla...
Read More Less
The Newcastle Arms Hotel
Nice room, good breakfast....


text:
Finance director Bill Oliver said the council, which fell out with previous developers over regeneration plans, had been 'quite receptive'. Although definitive plans are at least a year away, he said: 'We would ideally build additional retail with lots of residential above it.'
St Modwen also revealed a 33% increase in pre-tax profits to £14.5m on turnover of £57.6m for the first six months of the year. Development profits of £10.5m, up 62%, were equal to 80% of the total profits from development made in the whole of last year. Net assets grew by 19% to 143.4p a share, a rise that was matched by the dividend, up 19% to 1.9p a share.
The company also announced it had bagged Ian Menzies Gow, executive chairman of Geest, as a non-executive director.
- More about:
- EDF Group
- Electronics
- Intel Corporation
- Investec
- Lexus
- Management
- Mortgages
- Retail


text: If you are searching for unmatched quality resistance box, then we are the best place for feel the difference with us. The standard resistance box manufactured by us is used along with slip ring motors (AC and DC). Vibration and shock proof are the basic features of this resistance box. Finding varied applications in hallagues & cranes, steel rolling mills, rubber mixing mills and conversors. Besides this, we provide customized services of our resistance boxes in accordance to the needs of customers. We are distinguished as one of the best high resistance box manufacturers and suppliers from India.


text:
Your Dog, Your Life
The Scoop
Dog News, Politics
Bark-Out-Loud Humor
Doggie Style
Gear and Glam
Wildebeest creates the perfect present for new dog parents.
Dog Breeds
Foods & Treats
Health & Care
Behavior & Training
Dogs & Cleaning
Dog of the Day
Photo Comments
Photo Comments (1)
Photo Comments (2)
I got tagged by Ginger, Griff, Charlie, Lucky
Here are the rules:
Each player starts with seven random facts about themselves. Dogs who are tagged, need to post in their Diary the rules & their 7 pawsome facts. Then choose 7 dogs to tag and list their names. Don't forget to bark them a pmail that they have been tagged and to read your Diary, or, send them a fun Rosette announcing they've been Tagged!
Here are 7 fun facts about me!
1) I LOVE the vet (and going to the vet)
2) I love playing with my big sister Cookie
3) I'm 1 year old
4) I like to get brushed
5) I LOVE going for walks
6) I hate rain
7) I hate taking baths
I tag:
1) Dutchess
2) Little Levi
3) Max
4) Sissy
5) Mocha Bear
6) Boogie
7) Abbie
From time to time people tell me, "Lighten up, it's just a dog," or, "That's a lot of money for just a dog." They don't understand the distance traveled, the time spent or the costs involved for "just a dog."
Some of my proudest moments have come about with "just a dog." Many hours have passed and my only company was "just a dog," but I did not once feel slighted. Some of my saddest moments have been brought about by "just a dog," and, in those days of darkness, the gentle touch of "just a dog" gave me comfort and reason to overcome the day.
If you, too, think it's "just a dog," then you will probably understand phrases like "just a friend," "just a sunrise," or "just a promise." "Just a dog" brings into my life the very essence of friendship, trust, and pure unbridled joy. "Just a dog" brings out the compassion and patience that makes me a better person.
Because of "just a dog" I will rise early, take long walks and look longingly to the future. So for me, and folks like me, it's not "just a dog" but an embodiment of all the hopes and dreams of the future, the fond memories of the past and the pure joy of the moment.
"Just a dog" brings out what's good in me and diverts my thoughts away from myself and the worries of the day. I hope that someday they can understand that it's not "just a dog" but the thing that gives me humanity and keeps me from being "just a human."
So the next time you hear the phrase "just a dog." just smile....because they "just don't understand."
- Anonymous
Copyright © I-5 Publishing, LLC. All rights reserved.
Visit Catster


text:
Puyo Puyo Tetris – Swap Mode Demo Gameplayon April 16, 2017 at 3:00 pm
Puyo Puyo Tetris mixes things up with a special swap mode. Can you master playing both games at the same time?
Puyo Puyo Tetris mixes things up with a special swap mode. Can you master playing both games at the same time?
The latest movie in the hugely successful Saw series has a new title. The upcoming horror sequel was filmed under the the title Saw: Legacy, but it has now been retitled Jigsaw by Lionsgate. The studio has also revealed a new logo for the movie, which is the eighth in the franchise and arrives in October. Check it out below:Jigsaw takes its title from the movies' psychotic, trap-setting villain, who is played by Tobin Bell. Bell is set to return for the new film--his character technically died Continue Reading→
Nintendo has apologised for ongoing Switch shortages and promised to increase the volume of shipments to meet demand. In a post on the official Japanese Nintendo website, as translated by Google, the platform holder acknowledged that the Switch has continued to be in short supply since its launch in March.It went on to note that it has shipped new consoles out to retail every week, but is obviously still struggling to ensure the demand is met. Nintendo said it intends to increase the amount of Continue Reading→
The second Game of Thrones for this Season is here! Here is a quick list of the things we are pretty confident we are going to see next season. Continue Reading→
Wolfenstein II: The New Colossus may not be the last of the new Wolfenstein games. Continue Reading→
Game of Thrones Season 7 will soon be with us, but what will it bring? Continue Reading→


text:
Hi and welcome from Fort Worth TX!
This is a discussion on Hi Everyone! New guy from Upstate NY here within the New Members Introduce Yourself forums, part of the Welcome To DefensiveCarry.com category; Originally Posted by Rick H Hunting, Target, and self defense I have freinds that put down hunting and target. Their permits came back with the ...
Hi and welcome from Fort Worth TX!
- - - - -
Outside of a dog, a book is man's best friend. Inside a dog, it's too dark to read. -Groucho Marx
Welcome to the forum.
EOD - Initial success or total failure
Semper Fi
Welcome from central Mississippi.
Glock 27
welcome from SW PA ....
personally I switch off between my Glock 33 and ( Glock 21SF and H&K USP 45 )
Im a big guy and can easily make the Full Size .45s disappear under clothing
Welcome from Texas!
"Texas can make it without the United States, but the United States can't make it without Texas!".... Sam Houston
Retired LEO
Firearms Instructor
NRA Life Member
Welcome from Central California!
Lex et Libertas Semper Vigilo, Fortis, Paratus, et Fidelis!
"Not only do the people who put their lives on the line to protect the rest of us deserve better, we all deserve better than to have our own security undermined by those who undermine law enforcement." -Thomas Sowell
from Central Florida!
Proverbs 27:12 says: The prudent see danger and take refuge, but the simple keep going and suffer for it.
Certified Glock Armorer
NRA Life Member
Welcome from Tennessee!
Welcome to Tennessee, the patron state of shootin' stuff.--SHOOTER


text:
A panel of Ontario Court of Appeals judges has dismissed a defamation case against Toronto Mayor Rob Ford brought forward by a Beaches restaurant owner.
George Foulidis sued Mr. Ford two years ago after the mayor told the Toronto Sun that the deal between the city and Mr. Foulidis's Boardwalk Pub "stinks to high heaven." After a judge dismissed the $6-million lawsuit in 2012, Mr. Foulidis brought it to appeals court, where a panel of judges decided this week that the mayor's comments were not directed at the restaurant owner.
"Mr. Foulidis was not the target of Mr. Ford's words," the decision states. "Mr. Ford's words were not abusive or insulting towards Mr. Foulidis."
In the 2010 interview with the Toronto Sun, Mr. Ford spoke about "corruption and skullduggery" at City Hall meetings, before commenting on the deal involving Tuggs Incorporated, Mr. Foulidis's company that runs the Beaches restaurant. "And if that Tuggs deal doesn't stink to high heaven I…I...," the mayor said before his brother Doug Ford cut him off.
Lawyers for Mr. Foulidis argued in court that, even though the mayor never mentioned Mr. Foulidis by name in his comments to the Toronto Sun, they were defamatory because "reasonable readers make inferences. They 'read between the lines.'"
But the judges dismissed this argument. "In my view, a fair inference is that Mr. Ford regards the target of his critical comments as the entity known as Tuggs, not Mr. Foulidis personally," the decision says.Report Typo/Error
Follow @annhuion Twitter:


text:
COLORADO SPRINGS, Colo. - Colorado Springs police have named a suspect in a sexual assault case dating back to 1997.
Police say that in March of 1997, a woman was sexually assaulted after leaving a local bar and grill. The victim met a man at the bar and accepted a ride home with him, police said. The man drove her to the parking lot of her apartment and asked her to come inside. Police said that when the victim declined, the man became angry and sexually assaulted her in his vehicle.
Forensic evidence was collected from the victim, however no suspect was identified at the time.
In 2012 the case was reviewed by a CSPD cold case investigator. The forensic evidence was resubmitted to the Colorado Bureau of Investigation for additional DNA analysis using new methodology. A DNA profile was entered into the FBI database, where it was checked for a match.
Investigators were able to identify a suspect -- 41-year-old Atlantis Michaelson. Michaelson is currently incarcerated at a federal penitentiary in Virginia and is due to be released in December 2012, police said. Officers say that an arrest warrant has been issued for Michaelson and he will be arrested upon his release from the prison in December.


text:
Katherine Heigl and Josh Kelley Explain Baby Name
Actress Katherine Heigl and singer-songwriter Josh Kelley revealed the name of their second adopted child on Wednesday, and today we know more about why they chose to call their baby girl Adalaide Marie Hope Kelley.
"Adalaide because of my great-grandmother, Marie after my middle name, and Hope because that is what the process became," explains Katherine of her newborn daughter.
Adelaide joins her big sister, 3-year-old Naleigh, as the newest addition to the Kelley family. Whereas Naleigh was adopted from South Korea, Adelaide was born in Louisiana — close to Josh's hometown of Augusta, Ga. See a photo of the whole family in the video player below.
Watch "Heigl Debuts New Daughter" Video
Watch Josh Kelley's 'Naleigh Moon' Video


text:
6 Recommendations
lynsalyns's recommendation
My daughter likes to pull her hair clips out and scratches her head. These clips have a soft felt backing AND they are so totally super-cute. If you like to put pretties in your baby's not-hair (you know who you are) these are for you!
My Collections:
lyziwyg's recommendation
I am not a child but I still bought and wear these adorable barettes. I have the popscicle and the bunny. They are small enough to be somewhat discreet, yet I like to think that when someone gets close enough to see what they are, they get a secret burst of happiness.
Rgold's recommendation
They are perfect for my daughters hair they don't hurt her head and they stay in well. I got mine at www.chloeinstyle.com
lisabagg's recommendation
So adorable, well-made. Plus, they stay put!
OooLaLa's recommendation
Adorable! Functional and won't hurt your baby's hair.
My Collections:
TheTrendBoutique's recommendation
i got this for my son but then realised i could wear it too