<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7583433532713190768</id><updated>2011-11-28T00:09:23.844Z</updated><category term='comet scala lift tutorial fix'/><category term='scala'/><category term='sbt intelij idea development scala'/><category term='SQL'/><category term='Scala Development JRebel HowTo Install'/><category term='money economy'/><category term='ESB'/><category term='PL/SQL'/><category term='GlassFish Java Development'/><category term='Queues'/><category term='servicemix maven jbi esb undeploy'/><category term='GlassFish ESB WinXP Netbeans'/><category term='Oracle AQ'/><category term='Ubuntu Administration'/><category term='Oracle'/><category term='SOA'/><category term='code snippets unix scripting'/><category term='oracle development'/><category term='scala lift maven'/><category term='Development'/><category term='devlopment vbscript scripting vbs vbe windows'/><category term='Oracle AQ Tables JMS XML'/><category term='Active MQ'/><category term='openssl geting started'/><category term='JMS'/><title type='text'>Paul's Blog Spot</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-5944313921548055187</id><published>2011-05-16T14:57:00.002+01:00</published><updated>2011-05-16T15:06:25.683+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openssl geting started'/><title type='text'>Creating a certificate in openssl</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Get the binary distribution of openssl from &lt;a href="http://www.slproweb.com/products/Win32OpenSSL.html"&gt;http://www.slproweb.com/products/Win32OpenSSL.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Install "Microsoft Visual C++ 2008 SP1 Redistributable Package (x86) " first from &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/en/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&amp;amp;displaylang=en&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Install Win32 OpenSSL v1.0.0d from &lt;a href="http://www.slproweb.com/download/Win32OpenSSL-1_0_0d.exe"&gt;http://www.slproweb.com/download/Win32OpenSSL-1_0_0d.exe&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Add openssl bin directory to the path environment variable&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;# In a comand prompt create a CA folder&lt;/div&gt;&lt;div&gt;&lt;div&gt;mkdir CA&lt;/div&gt;&lt;div&gt;cd CA&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;# Create expected folders and files&lt;/div&gt;&lt;div&gt;mkdir private&lt;/div&gt;&lt;div&gt;mkdir newcerts&lt;/div&gt;&lt;div&gt;mkdir certs&lt;/div&gt;&lt;div&gt;mkdir crl&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;touch index.txt&lt;/div&gt;&lt;div&gt;touch serial    # Best to copy this file from the demoCA in the bin directory&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;# change dir in openssl.cfg from ./demoCA to .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365&lt;/div&gt;&lt;div&gt;openssl req -nodes -new -x509 -keyout newreq.pem -out newreq.pem -days 365&lt;/div&gt;&lt;div&gt;openssl x509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem&lt;/div&gt;&lt;div&gt;openssl ca -policy policy_anything -out newcert.pem -infiles tmp.pem&lt;/div&gt;&lt;div&gt;openssl x509 -inform PEM -in newcert.pem -outform DER -out newcert.cer&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-5944313921548055187?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/5944313921548055187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=5944313921548055187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/5944313921548055187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/5944313921548055187'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2011/05/creating-certificate-in-openssl.html' title='Creating a certificate in openssl'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-2668263220136922944</id><published>2011-03-29T11:12:00.005+01:00</published><updated>2011-03-29T11:28:32.313+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle AQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Queues'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Active MQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Setting up Active MQ to Bridge to Oracle AQ</title><content type='html'>I've recently been working on migrating away from Oracle Advanced Queues to Active MQ and as such I have tried to opt for a gradual migration strategy. As part of this I have looked into creating a JMS Bridge which is supprisingly easy to set up in Active MQ.&lt;br /&gt;&lt;br /&gt;This post shows how to set up queues and routing for the following tests&lt;br /&gt;&lt;br /&gt;A) Send message to AQ which gets Moved to an Active MQ queue&lt;br /&gt;&lt;br /&gt;A1 -&amp;gt; A2&lt;br /&gt;&lt;br /&gt;B) Send message to AQ, throw exception when dequeing message to push it into the exception queue, then moved to an Active MQ queue&lt;br /&gt;&lt;br /&gt;B1 -&amp;gt; B1_E -&amp;gt; B3&lt;br /&gt;&lt;br /&gt;C) Send message to MQ which then gets moved to AQ&lt;br /&gt;&lt;br /&gt;C1 -&amp;gt; C2&lt;br /&gt;C)&lt;br /&gt;&lt;br /&gt;First create the queues under a new user called qtest in oracle&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE_TABLE( Queue_table =&amp;gt; 'qtest.TEST_A1_QT', Queue_payload_type =&amp;gt; 'SYS.AQ$_JMS_TEXT_MESSAGE',&lt;br /&gt;Sort_list =&amp;gt; 'ENQ_TIME', Compatible =&amp;gt; '8.1.3');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE( Queue_name =&amp;gt; 'qtest.TEST_A1', Queue_table =&amp;gt; 'qtest.TEST_A1_QT',&lt;br /&gt;Queue_type =&amp;gt; 0, Max_retries =&amp;gt; 4, Retry_delay =&amp;gt; 60, Retention_time =&amp;gt; 220752000, dependency_tracking =&amp;gt; FALSE);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue (queue_name=&amp;gt;'qtest.TEST_A1');&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE_TABLE( Queue_table =&amp;gt; 'qtest.TEST_B1_QT', Queue_payload_type =&amp;gt; 'SYS.AQ$_JMS_TEXT_MESSAGE',&lt;br /&gt;Sort_list =&amp;gt; 'ENQ_TIME', Compatible =&amp;gt; '8.1.3');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE( Queue_name =&amp;gt; 'qtest.TEST_B1', Queue_table =&amp;gt; 'qtest.TEST_B1_QT',&lt;br /&gt;Queue_type =&amp;gt; 0, Max_retries =&amp;gt; 4, Retry_delay =&amp;gt; 60, Retention_time =&amp;gt; 220752000, dependency_tracking =&amp;gt; FALSE);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue (queue_name=&amp;gt;'qtest.TEST_B1');&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue(queue_name =&amp;gt; 'AQ$_TEST_B1_QT_E', enqueue =&amp;gt; FALSE, dequeue =&amp;gt; TRUE);&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE_TABLE( Queue_table =&amp;gt; 'qtest.TEST_C1_QT', Queue_payload_type =&amp;gt; 'SYS.AQ$_JMS_TEXT_MESSAGE',&lt;br /&gt;Sort_list =&amp;gt; 'ENQ_TIME', Compatible =&amp;gt; '8.1.3');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE( Queue_name =&amp;gt; 'qtest.TEST_C1', Queue_table =&amp;gt; 'qtest.TEST_C1_QT',&lt;br /&gt;Queue_type =&amp;gt; 0, Max_retries =&amp;gt; 4, Retry_delay =&amp;gt; 60, Retention_time =&amp;gt; 220752000, dependency_tracking =&amp;gt; FALSE);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue (queue_name=&amp;gt;'qtest.TEST_C1');&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE_TABLE( Queue_table =&amp;gt; 'qtest.TEST_C2_QT', Queue_payload_type =&amp;gt; 'SYS.AQ$_JMS_TEXT_MESSAGE',&lt;br /&gt;Sort_list =&amp;gt; 'ENQ_TIME', Compatible =&amp;gt; '8.1.3');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_AQADM.CREATE_QUEUE( Queue_name =&amp;gt; 'qtest.TEST_C2', Queue_table =&amp;gt; 'qtest.TEST_C2_QT',&lt;br /&gt;Queue_type =&amp;gt; 0, Max_retries =&amp;gt; 4, Retry_delay =&amp;gt; 60, Retention_time =&amp;gt; 220752000, dependency_tracking =&amp;gt; FALSE);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue (queue_name=&amp;gt;'qtest.TEST_C2');&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Next edit the Active MQ configuration conf/activemq.xml and at the end of the config before the closing beans tag add the oracle connection and factories.&lt;br /&gt;&lt;br /&gt;&lt;bean id="connectionFactoryOracleAQQueue" class="oracle.jms.AQjmsFactory" method="getQueueConnectionFactory"&gt;&lt;br /&gt;      &lt;constructor-arg index="0"&gt;&lt;br /&gt;          &lt;value&gt;jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = xe)))&lt;/value&gt;&lt;br /&gt;      &lt;/constructor-arg&gt;&lt;br /&gt;      &lt;constructor-arg index="1" type="java.util.Properties"&gt;&lt;br /&gt;          &lt;value&gt;&lt;/value&gt;&lt;br /&gt;      &lt;/constructor-arg&gt;&lt;br /&gt;  &lt;/bean&gt;&lt;br /&gt;&lt;br /&gt;  &lt;bean id="oracleQueueCredentials" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"&gt;&lt;br /&gt;      &lt;property name="targetConnectionFactory"&gt;&lt;br /&gt;          &lt;ref bean="connectionFactoryOracleAQQueue"&gt;&lt;br /&gt;      &lt;/ref&gt;&lt;/property&gt;&lt;br /&gt;      &lt;property name="username"&gt;&lt;br /&gt;          &lt;value&gt;qtest&lt;/value&gt;&lt;br /&gt;      &lt;/property&gt;&lt;br /&gt;      &lt;property name="password"&gt;&lt;br /&gt;          &lt;value&gt;qtest&lt;/value&gt;&lt;br /&gt;      &lt;/property&gt;&lt;br /&gt;  &lt;/bean&gt;&lt;br /&gt;&lt;br /&gt; &lt;bean id="oracleQueue" class="org.apache.camel.component.jms.JmsComponent"&gt;&lt;br /&gt;      &lt;property name="connectionFactory" ref="oracleQueueCredentials"&gt;&lt;br /&gt; &lt;/property&gt;&lt;/bean&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally add the routing in the camel section of Active MQ config&lt;br /&gt;&lt;br /&gt;    &lt;camelcontext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring"&gt;&lt;br /&gt;        &lt;!--  Pick up AQ messages and sent them to MQ --&gt;&lt;br /&gt;        &lt;route&gt;&lt;br /&gt;            &lt;from uri="oracleQueue:queue:qtest.TEST_A1"&gt;&lt;br /&gt;            &lt;to uri="activemq:queue:testa2"&gt;&lt;br /&gt;        &lt;/to&gt;&lt;/from&gt;&lt;/route&gt;&lt;br /&gt;        &lt;!--  Pick up Exception AQ messages and sent them to MQ --&gt;&lt;br /&gt;        &lt;route&gt;&lt;br /&gt;            &lt;from uri="oracleQueue:queue:AQ$_TEST_B1_QT_E"&gt;&lt;br /&gt;            &lt;to uri="activemq:queue:testb3"&gt;&lt;br /&gt;        &lt;/to&gt;&lt;/from&gt;&lt;/route&gt;&lt;br /&gt;        &lt;!--  Send MQ messages to AQ --&gt;&lt;br /&gt;        &lt;route&gt;&lt;br /&gt;            &lt;from uri="activemq:queue:testc1"&gt;&lt;br /&gt;            &lt;to uri="oracleQueue:queue:qtest.TEST_C2"&gt;&lt;br /&gt;        &lt;/to&gt;&lt;/from&gt;&lt;/route&gt;&lt;br /&gt;   &lt;/camelcontext&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-2668263220136922944?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/2668263220136922944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=2668263220136922944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2668263220136922944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2668263220136922944'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2011/03/setting-up-active-mq-to-bridge-to.html' title='Setting up Active MQ to Bridge to Oracle AQ'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-354165496816406020</id><published>2011-03-24T11:50:00.002Z</published><updated>2011-03-24T11:54:09.466Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle AQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Enabling AQ Exception Queue</title><content type='html'>Had to spend a little while searching for this one so added here for quick reference&lt;br /&gt;&lt;br /&gt;By default exception queues are disabled for enqueue and dequeue so to enable them you need to use the start_queue function however Oracle prevents enquing to these queues so you will need to explicitly state that enqueue is disabled/FALSE and de-queue is enabled/TRUE&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue(queue_name =&gt; 'AQ$_TEST_Q_IN_QT_E', enqueue =&gt; FALSE, dequeue =&gt; TRUE);&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-354165496816406020?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/354165496816406020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=354165496816406020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/354165496816406020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/354165496816406020'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2011/03/enabling-aq-exception-queue.html' title='Enabling AQ Exception Queue'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-3147502820710119137</id><published>2011-03-24T11:49:00.001Z</published><updated>2011-03-24T11:50:46.161Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle AQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Creating an AQ queue</title><content type='html'>&lt;blockquote&gt;BEGIN&lt;br /&gt;  DBMS_AQADM.CREATE_QUEUE_TABLE( Queue_table =&gt; 'MYQUEUES.TEST_Q_IN_QT', Queue_payload_type =&gt; 'SYS.AQ$_JMS_TEXT_MESSAGE',&lt;br /&gt;  Sort_list =&gt; 'ENQ_TIME', Compatible =&gt; '8.1.3');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  DBMS_AQADM.CREATE_QUEUE( Queue_name =&gt; 'MYQUEUES.TEST_Q_IN', Queue_table =&gt; 'MYQUEUES.TEST_Q_IN_QT', &lt;br /&gt;  Queue_type =&gt; 0, Max_retries =&gt; 4, Retry_delay =&gt; 60, Retention_time =&gt; 220752000, dependency_tracking =&gt; FALSE);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue (queue_name=&gt;'MYQUEUES.TEST_Q_IN');&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;EXECUTE dbms_aqadm.start_queue(queue_name =&gt; 'AQ$_TEST_Q_IN_QT_E', enqueue =&gt; FALSE, dequeue =&gt; TRUE);&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;commit;&lt;br /&gt;/&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-3147502820710119137?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/3147502820710119137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=3147502820710119137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/3147502820710119137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/3147502820710119137'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2011/03/creating-aq-queue.html' title='Creating an AQ queue'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-9122067517382720371</id><published>2011-01-07T11:40:00.009Z</published><updated>2011-01-07T15:53:03.771Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Split Comma delimited line into separate row output in Scala</title><content type='html'>Needed to get the fields in a SQL statement from a list of comma delimited fields into row form so I could paste it into a spreadsheet to work on, this is how I did it:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;scala&gt; def listline(line: String) = for(i &lt;- line.split(",").toList) println(i.trim)&lt;br /&gt;listline: (line: String)Unit&lt;br /&gt;&lt;br /&gt;scala&gt; listline("abc,def,ghi")&lt;br /&gt;abc&lt;br /&gt;def&lt;br /&gt;ghi&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Update:  More complex version&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;scala&gt; def splitList(line: String, delim: List[String]): Unit = delim match {&lt;br /&gt;     |   case head :: tail =&gt; for(item &lt;- line.split(head).toList) splitList(item, tail)&lt;br /&gt;     |   case Nil =&gt; println(line.trim)&lt;br /&gt;     | }&lt;br /&gt;splitList: (line: String,delim: List[String])Unit&lt;br /&gt;&lt;br /&gt;scala&gt;&lt;br /&gt;&lt;br /&gt;scala&gt; def listline(line: String) = splitList(line, List(",","and","&amp;"))&lt;br /&gt;listline: (line: String)Unit&lt;br /&gt;&lt;br /&gt;scala&gt; listline("abc,def,ghi, jkl and mno &amp; pqr")&lt;br /&gt;abc&lt;br /&gt;def&lt;br /&gt;ghi&lt;br /&gt;jkl&lt;br /&gt;mno&lt;br /&gt;pqr&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Without prompt:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;def splitList(line: String, delim: List[String]): Unit = delim match {&lt;br /&gt;  case head :: tail =&gt; for(item &lt;- line.split(head).toList) splitList(item, tail)&lt;br /&gt;  case Nil =&gt; println(line.trim)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;def listline(line: String) = splitList(line, List(",","and","&amp;"))&lt;br /&gt;&lt;br /&gt;// Simple&lt;br /&gt;// def listline(line: String) = for(i &lt;- line.split(",").toList) println(i.trim)&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-9122067517382720371?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/9122067517382720371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=9122067517382720371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/9122067517382720371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/9122067517382720371'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2011/01/split-comma-delimited-line-into.html' title='Split Comma delimited line into separate row output in Scala'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-7175182077399660712</id><published>2010-11-18T14:55:00.002Z</published><updated>2010-11-18T14:58:42.514Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle AQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Re-Enqueuing Oracle AQ Message</title><content type='html'>I recently had an issue with AQ messages which would not de-queue following a wierd Oracle error.  The messages would only dequeue in Browse mode and therefore would never get processed or leave the queue.  &lt;br /&gt;&lt;br /&gt;To resolve this issue and to get my messages to the system that needed to processes them I wrote the following SQL to read the message and re-enqueue it as a new message which was then processed:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;DECLARE&lt;br /&gt;  queueopts               DBMS_AQ.DEQUEUE_OPTIONS_T;&lt;br /&gt;  msgprops                DBMS_AQ.MESSAGE_PROPERTIES_T;&lt;br /&gt;  v_dequeue_options       DBMS_AQ.dequeue_options_t;&lt;br /&gt;  v_enqueue_options       DBMS_AQ.enqueue_options_t;&lt;br /&gt;  v_message_properties    DBMS_AQ.message_properties_t;&lt;br /&gt;  v_message_prop_en       DBMS_AQ.message_properties_t;&lt;br /&gt;  v_message_handle        RAW(16);&lt;br /&gt;  v_message               sys.aq$_jms_text_message ;&lt;br /&gt;  v_message_provider_id   number(8,2);&lt;br /&gt;  v_message_provider      varchar2(50);&lt;br /&gt;  v_alert_msg_id          char(36);&lt;br /&gt;  v_alert_msg_type        varchar2(50);&lt;br /&gt;  v_num_attach            number(3);&lt;br /&gt;  v_alert_msg             clob;&lt;br /&gt;  v_alert_msg_id_in       char(36);&lt;br /&gt;  v_alert_msg_id_deq      char(36);&lt;br /&gt;  v_corrmsg_id_in         char(36);&lt;br /&gt;  V_QUEUE_MSG_NAME        VARCHAR2(50);&lt;br /&gt;  V_QUEUE_MSG_ID          NUMBER(8,2);&lt;br /&gt;  V_MESSAGE_EN            SYS.AQ$_JMS_TEXT_MESSAGE;&lt;br /&gt;  V_ENQUEUE_OPTIONS_EN    DBMS_AQ.ENQUEUE_OPTIONS_T;&lt;br /&gt;  V_MSGID                 RAW(16);&lt;br /&gt;  V_MESSAGE_SIZE          NUMBER(5);&lt;br /&gt;BEGIN&lt;br /&gt;   v_dequeue_options.dequeue_mode := DBMS_AQ.BROWSE;&lt;br /&gt;   v_dequeue_options.wait := 2; --DBMS_AQ.NO_WAIT;&lt;br /&gt;   v_dequeue_options.correlation := v_alert_msg_id_deq ;&lt;br /&gt;   v_dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;&lt;br /&gt;--   v_dequeue_options.navigation := DBMS_AQ.NEXT_MESSAGE;&lt;br /&gt;   v_dequeue_options.msgid := '93E04404404463F7E04400144FDCA7C6';&lt;br /&gt;&lt;br /&gt;  V_QUEUE_MSG_NAME := 'MYAPP.MYAPP_WORK_IN';&lt;br /&gt;  v_alert_msg_id := '5bc0352d-4578-4578-b938-bd457841763b';&lt;br /&gt;  v_corrmsg_id_in := '9af66884-d74c-af66-af66-479be7e7d772';&lt;br /&gt;&lt;br /&gt;  -- Dequeue message from the queue&lt;br /&gt;  DBMS_AQ.DEQUEUE(queue_name   =&gt; V_QUEUE_MSG_NAME,&lt;br /&gt;                  dequeue_options =&gt; v_dequeue_options,&lt;br /&gt;                  message_properties =&gt; v_message_properties,&lt;br /&gt;                  payload =&gt; v_message,&lt;br /&gt;                  msgid =&gt; v_message_handle);&lt;br /&gt;                 &lt;br /&gt;  V_MESSAGE.GET_TEXT(v_alert_msg);&lt;br /&gt; &lt;br /&gt;  /* Now display some of the information. */&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE('Dequeued msg id is ' || RAWTOHEX (v_message_handle));&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE('MsgId: ' || v_message.get_string_property('msgId'));&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE('MsgType: ' || v_message.get_string_property('msgType'));&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE('numTags: ' || v_message.get_int_property('numTags'));&lt;br /&gt;&lt;br /&gt;  -- Output Message&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE(v_alert_msg);&lt;br /&gt;&lt;br /&gt;  -- Create a new Message&lt;br /&gt;  V_MESSAGE_EN := SYS.AQ$_JMS_TEXT_MESSAGE.CONSTRUCT;&lt;br /&gt;  v_message_prop_en.correlation := v_corrmsg_id_in;&lt;br /&gt;&lt;br /&gt;  -- Setting user defined message properties&lt;br /&gt;  V_MESSAGE_EN.SET_INT_PROPERTY('numTags', 0);&lt;br /&gt;  V_MESSAGE_EN.SET_STRING_PROPERTY('msgType' , v_message.get_string_property('msgType'));&lt;br /&gt;  V_MESSAGE_EN.SET_STRING_PROPERTY('msgProvider' , v_message.get_string_property('msgProvider'));&lt;br /&gt;  V_MESSAGE_EN.SET_STRING_PROPERTY('msgId' , v_alert_msg_id);&lt;br /&gt;&lt;br /&gt;  -- Set Message Payload&lt;br /&gt;  V_MESSAGE_EN.SET_TEXT(v_alert_msg);&lt;br /&gt;&lt;br /&gt;  -- Enqueue this message into AQ queue using DBMS_AQ package&lt;br /&gt;  DBMS_AQ.ENQUEUE(QUEUE_NAME =&gt; V_QUEUE_MSG_NAME,&lt;br /&gt;            ENQUEUE_OPTIONS =&gt; v_enqueue_options,&lt;br /&gt;            MESSAGE_PROPERTIES =&gt; v_message_prop_en,&lt;br /&gt;            PAYLOAD =&gt; V_MESSAGE_EN,&lt;br /&gt;            MSGID =&gt; v_alert_msg_id);&lt;br /&gt;&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE('Message ' || v_alert_msg_id || ' sent');&lt;br /&gt;END;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-7175182077399660712?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/7175182077399660712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=7175182077399660712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/7175182077399660712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/7175182077399660712'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/11/re-enqueuing-oracle-aq-message.html' title='Re-Enqueuing Oracle AQ Message'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-2741121323912556391</id><published>2010-11-17T16:55:00.002Z</published><updated>2010-11-17T16:57:01.235Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Granting access to multiple tables</title><content type='html'>Simple anonymous script to grant read access to a number of other user's tables&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;-- While as a DBA&lt;br /&gt;DECLARE&lt;br /&gt;BEGIN&lt;br /&gt;  FOR x in (SELECT owner, table_name FROM all_tables WHERE OWNER IN('SCOTT', 'MYAPP', 'HR'))&lt;br /&gt;  LOOP&lt;br /&gt;    EXECUTE IMMEDIATE 'GRANT SELECT ON ' || x.owner || '.' || x.table_name || ' TO myuser';&lt;br /&gt;  END LOOP;&lt;br /&gt;END;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-2741121323912556391?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/2741121323912556391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=2741121323912556391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2741121323912556391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2741121323912556391'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/11/granting-access-to-multiple-tables.html' title='Granting access to multiple tables'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-4918262245192135588</id><published>2010-10-10T18:11:00.005+01:00</published><updated>2010-10-10T18:20:46.477+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala Development JRebel HowTo Install'/><title type='text'>Using JRebel with sbt</title><content type='html'>At the time of writing, JRebel are offering a free year's license for Scala development see &lt;a href="http://sales.zeroturnaround.com/"&gt;http://sales.zeroturnaround.com/&lt;/a&gt;, this is how to install it:&lt;br /&gt;&lt;br /&gt;1) Download and install JRebel from &lt;a href="http://www.zeroturnaround.com/jrebel/current/"&gt;http://www.zeroturnaround.com/jrebel/current/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Edit the sbt command&lt;br /&gt;&lt;blockquote&gt;java -Xmx512M -noverify -javaagent:/usr/bin/jrebel/jrebel.jar -jar `dirname $0`/sbt-launch.jar "$@" &lt;/blockquote&gt;&lt;br /&gt;3) go to your projects root directory and run:&lt;br /&gt;&lt;blockquote&gt;sbt&lt;br /&gt;sbt&gt; update&lt;br /&gt;sbt&gt; jetty-run&lt;br /&gt;sbt&gt; ~ prepare-webapp &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-4918262245192135588?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/4918262245192135588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=4918262245192135588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4918262245192135588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4918262245192135588'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/10/using-jrebel-with-sbt.html' title='Using JRebel with sbt'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-6398303928554149132</id><published>2010-09-15T19:08:00.005+01:00</published><updated>2011-09-09T16:08:16.395+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sbt intelij idea development scala'/><title type='text'>Creating Intellij Projects for SBT Projects</title><content type='html'>&lt;div&gt;I'm currently working on an Open-Source Scala project and we have switched our build process from Maven2 to SBT or Simple Build Tool &lt;a href="http://code.google.com/p/simple-build-tool/"&gt;http://code.google.com/p/simple-build-tool/&lt;/a&gt;.  We've mainly done this as our project will be based on the &lt;a href="http://akkasource.org/"&gt;Akka &lt;/a&gt;and the &lt;a href="http://liftweb.net/"&gt;Lift framework&lt;/a&gt; which have also now switched to SBT.&lt;/div&gt;&lt;br /&gt;SBT provides many of the features of Maven such as loading dependencies from remote repositories but is much simpler and the configuration is done in Scala rather than using messy xml files.&lt;br /&gt;&lt;br /&gt;As part of this project I have found that &lt;a href="http://www.jetbrains.com/idea/"&gt;JetBrains IntelliJ IDEA&lt;/a&gt; Community Edition seems to be the best Scala IDE I have tried and also has an SBT plug-in.  As a bonus SBT has an action which will generate an Intellij IDEA project file configured to work with SBT.&lt;br /&gt;&lt;br /&gt;To use this, go to the root of your SBT project and type sbt to start sbt, then enter:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;*sbtIdeaRepo at http://mpeltonen.github.com/maven/&lt;br /&gt;*idea is com.github.mpeltonen sbt-idea-processor 0.1-SNAPSHOT&lt;br /&gt;update&lt;br /&gt;idea&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This will generate the .ipr file which you can then use&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;==============================================================&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" &gt;Update&lt;/span&gt;&lt;/b&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Plug-ins are now stored globally in a $HOME/.sbt/plugins/build.sbt or C:\Documents and Settings\&lt;i&gt;username&lt;/i&gt;\.sbt\plugins file which for this plugin the following contents should be added:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Also the task is now called &lt;b&gt;gen-idea&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Note:&lt;/b&gt; In window use the command line to create a .sbt directory&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See &lt;a href="https://github.com/harrah/xsbt/wiki/Plugins"&gt;https://github.com/harrah/xsbt/wiki/Plugins&lt;/a&gt; for more details&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-6398303928554149132?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/6398303928554149132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=6398303928554149132' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6398303928554149132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6398303928554149132'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/09/creating-intellij-projects-for-sbt.html' title='Creating Intellij Projects for SBT Projects'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-7516791186153312645</id><published>2010-09-15T18:55:00.003+01:00</published><updated>2010-09-15T19:08:01.425+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='devlopment vbscript scripting vbs vbe windows'/><title type='text'>Decoding VBE and Re-Coding VBS Files</title><content type='html'>Based on original article &lt;a href="http://www.john.bryntze.net/jbkb/index.php?title=Script-kb1_Decode_vbe_files"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since 2003 Microsoft has provided a command line script encoder available from &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e7877f67-c447-4873-b1b0-21f0626a6329&amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e7877f67-c447-4873-b1b0-21f0626a6329&amp;DisplayLang=en&lt;/a&gt;  This tool encodes the script so it can't be read by a casual user but is no protection against a determined hacker.&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&gt;screnc &lt;span style="font-style:italic;"&gt;ScriptFile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note&lt;/span&gt;: You will need to install the download and also add the directory to your path to use it.&lt;br /&gt;&lt;br /&gt;If you have a vbe script which you need to view/edit use create a new .vbs file and add the following in it:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;option explicit&lt;br /&gt;Dim oArgs, txtFileName&lt;br /&gt;&lt;br /&gt;'Optional argument : the encoded filename&lt;br /&gt;txtFileName=""&lt;br /&gt;Set oArgs = WScript.Arguments&lt;br /&gt;&lt;br /&gt;Select Case oArgs.Count&lt;br /&gt;Case 0 'No Arg, popup a dialog box to choose the file&lt;br /&gt; txtFileName=BrowseForFolder("Choose an encoded file", &amp;H4031, &amp;H0011)&lt;br /&gt;Case 1&lt;br /&gt; If Instr(oArgs(0),"?")=0 Then '-? ou /? =&gt; aide&lt;br /&gt;  txtFileName=oArgs(0)&lt;br /&gt; End If&lt;br /&gt;Case Else&lt;br /&gt; WScript.Echo "Too many parameters"&lt;br /&gt;End Select&lt;br /&gt;Set oArgs = Nothing&lt;br /&gt;&lt;br /&gt;If txtFileName&lt;&gt;"" Then&lt;br /&gt; Dim fso&lt;br /&gt; Set fso=WScript.CreateObject("Scripting.FileSystemObject")&lt;br /&gt; If fso.FileExists(txtFileName) Then&lt;br /&gt;  Dim oFile,txtFileContents&lt;br /&gt;  Set oFile = fso.OpenTextFile(txtFileName, 1)&lt;br /&gt;  txtFileContents=oFile.readAll&lt;br /&gt;  oFile.close&lt;br /&gt;  Set oFile=Nothing&lt;br /&gt;&lt;br /&gt;  Const TagInit="#@~^" '#@~^awQAAA==&lt;br /&gt;  Const TagFin="==^#~@" '&amp; chr(0)&lt;br /&gt;  Dim lStartCode, lExitCode&lt;br /&gt;  Do&lt;br /&gt;   lExitCode=0&lt;br /&gt;   lStartCode=Instr(txtFileContents,TagInit)&lt;br /&gt;   If lStartCode&gt;0 Then&lt;br /&gt;    If (Instr(lStartCode,txtFileContents,"==")-lStartCode)=10 Then 'If "==" follows the tag&lt;br /&gt;     lExitCode=Instr(lStartCode,txtFileContents,TagFin)&lt;br /&gt;     If lExitCode&gt;0 Then&lt;br /&gt;      txtFileContents=Left(txtFileContents,lStartCode-1) &amp; _&lt;br /&gt;      Decode(Mid(txtFileContents,lStartCode+12,lExitCode-lStartCode-12-6)) &amp; _&lt;br /&gt;      Mid(txtFileContents,lExitCode+6)&lt;br /&gt;      End If&lt;br /&gt;    End If&lt;br /&gt;   End If&lt;br /&gt;  Loop Until lExitCode=0&lt;br /&gt;                writeToFile txtFileName &amp; ".vbs", txtFileContents&lt;br /&gt;  WScript.Echo txtFileContents&lt;br /&gt; Else&lt;br /&gt;  WScript.Echo txtFileName &amp; " not found"&lt;br /&gt; End If&lt;br /&gt; Set fso=Nothing&lt;br /&gt;Else&lt;br /&gt; WScript.Echo "Please give a filename"&lt;br /&gt; WScript.Echo "Usage : " &amp; wscript.fullname  &amp; " " &amp; WScript.ScriptFullName &amp; " &lt;filename&gt;"&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;Sub writeToFile(txtFileName, txtFileContents)&lt;br /&gt;        Dim txtstr&lt;br /&gt;&lt;br /&gt; Set txtstr = fso.CreateTextFile(txtFileName, True)&lt;br /&gt;        txtstr.write txtFileContents&lt;br /&gt;&lt;br /&gt; txtstr.close&lt;br /&gt; Set txtstr=Nothing&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Function Decode(txtBinChars)&lt;br /&gt; Dim se,i,c,j,index,txtBinCharsTemp&lt;br /&gt; Dim tDecode(127)&lt;br /&gt; Const Combinaison="1231232332321323132311233213233211323231311231321323112331123132"&lt;br /&gt;&lt;br /&gt; Set se=WSCript.CreateObject("Scripting.Encoder")&lt;br /&gt;&lt;br /&gt;        For i=9 to 127&lt;br /&gt;  tDecode(i)="JLA"&lt;br /&gt; Next&lt;br /&gt;&lt;br /&gt;        For i=9 to 127&lt;br /&gt;  txtBinCharsTemp=Mid(se.EncodeScriptFile(".vbs",string(3,i),0,""),13,3)&lt;br /&gt;  For j=1 to 3&lt;br /&gt;   c=Asc(Mid(txtBinCharsTemp,j,1))&lt;br /&gt;   tDecode(c)=Left(tDecode(c),j-1) &amp; chr(i) &amp; Mid(tDecode(c),j+1)&lt;br /&gt;  Next&lt;br /&gt; Next&lt;br /&gt;&lt;br /&gt; 'Next line we correct a bug, otherwise a ")" could be decoded to a "&gt;"&lt;br /&gt; tDecode(42)=Left(tDecode(42),1) &amp; ")" &amp; Right(tDecode(42),1)&lt;br /&gt;&lt;br /&gt;        Set se=Nothing&lt;br /&gt;&lt;br /&gt; txtBinChars=Replace(Replace(txtBinChars,"@&amp;",chr(10)),"@#",chr(13))&lt;br /&gt; txtBinChars=Replace(Replace(txtBinChars,"@*","&gt;"),"@!","&lt;")&lt;br /&gt; txtBinChars=Replace(txtBinChars,"@$","@")&lt;br /&gt; index=-1&lt;br /&gt;&lt;br /&gt; For i=1 to Len(txtBinChars)&lt;br /&gt;  c=asc(Mid(txtBinChars,i,1))&lt;br /&gt;  If c&lt;128 Then index=index+1&lt;br /&gt;  If (c=9) or ((c&gt;31) and (c&lt;128)) Then&lt;br /&gt;   If (c&lt;&gt;60) and (c&lt;&gt;62) and (c&lt;&gt;64) Then&lt;br /&gt;    txtBinChars=Left(txtBinChars,i-1) &amp; Mid(tDecode(c),Mid(Combinaison,(index mod 64)+1,1),1) &amp; Mid(txtBinChars,i+1)&lt;br /&gt;   End If&lt;br /&gt;  End If&lt;br /&gt; Next&lt;br /&gt; Decode=txtBinChars&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Function BrowseForFolder(ByVal pstrPrompt, ByVal pintBrowseType, ByVal pintLocation)&lt;br /&gt; Dim ShellObject, pstrTempFolder, x&lt;br /&gt; Set ShellObject=WScript.CreateObject("Shell.Application")&lt;br /&gt; On Error Resume Next&lt;br /&gt; Set pstrTempFolder=ShellObject.BrowseForFolder(&amp;H0,pstrPrompt,pintBrowseType,pintLocation)&lt;br /&gt; BrowseForFolder=pstrTempFolder.ParentFolder.ParseName(pstrTempFolder.Title).Path&lt;br /&gt; If Err.Number&lt;&gt;0 Then BrowseForFolder=""&lt;br /&gt; Set pstrTempFolder=Nothing&lt;br /&gt; Set ShellObject=Nothing&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;YourDecryptScriptName&lt;/span&gt;.vbs &lt;span style="font-style:italic;"&gt;FileToDecrypt&lt;/span&gt;.vbe&lt;br /&gt;&lt;br /&gt;The script will decode the vbe file, display it in a message box and also create/overwrite a new file called &lt;span style="font-style:italic;"&gt;FileToDecrypt&lt;/span&gt;.vbe.vbs which you can edit&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-7516791186153312645?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/7516791186153312645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=7516791186153312645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/7516791186153312645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/7516791186153312645'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/09/decoding-vbe-and-re-coding-vbs-files.html' title='Decoding VBE and Re-Coding VBS Files'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-2731601555048633064</id><published>2010-09-10T10:04:00.001+01:00</published><updated>2010-09-10T10:05:47.835+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu Administration'/><title type='text'>Starting &amp; Stopping Services on Ubuntu</title><content type='html'>Get a list of services:&lt;br /&gt;&lt;br /&gt;ls /etc/init.d&lt;br /&gt;&lt;br /&gt;Then Stop/Start using servicename followed by action:&lt;br /&gt;&lt;br /&gt;sudo invoke-rc.d servicename stop&lt;br /&gt;&lt;br /&gt;sudo invoke-rc.d servicename stop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-2731601555048633064?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/2731601555048633064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=2731601555048633064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2731601555048633064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2731601555048633064'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/09/starting-stopping-services-on-ubuntu.html' title='Starting &amp; Stopping Services on Ubuntu'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-7013874139865191160</id><published>2010-08-23T12:40:00.003+01:00</published><updated>2010-08-23T12:41:41.153+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle development'/><title type='text'>Oracle SQL to read a BLOB</title><content type='html'>Oracle SQL to read a BLOB&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;CREATE OR REPLACE PROCEDURE read_blob &lt;br /&gt;IS&lt;br /&gt;    l_blob              BLOB;&lt;br /&gt;    l_blob_length       NUMBER;&lt;br /&gt;    l_amount            BINARY_INTEGER := 10000; -- must be &lt;= ~32765.&lt;br /&gt;    l_offset            INTEGER := 1;&lt;br /&gt;    l_buffer            RAW(20000);&lt;br /&gt;    l_text_buffer       VARCHAR2(32767);&lt;br /&gt;    l_break_at          PLS_INTEGER := 141; -- must be &lt;= 255.&lt;br /&gt;BEGIN&lt;br /&gt;    &lt;br /&gt;    SELECT PZPVSTREAM INTO l_blob FROM PEGARULES.XCS_WORK&lt;br /&gt;    WHERE pxinsname = 'W-10332';&lt;br /&gt;     &lt;br /&gt;    -- Figure out how long the BLOB is.&lt;br /&gt;    l_blob_length := DBMS_LOB.GETLENGTH(l_blob);&lt;br /&gt;&lt;br /&gt;    -- We'll loop through the BLOB as many times as necessary to&lt;br /&gt;    -- get all its data.&lt;br /&gt;    FOR i IN 1..CEIL(l_blob_length/l_amount) LOOP&lt;br /&gt;&lt;br /&gt;        -- Read in the given chunk of the BLOB.&lt;br /&gt;        DBMS_LOB.READ(l_blob&lt;br /&gt;        ,             l_amount&lt;br /&gt;        ,             l_offset&lt;br /&gt;        ,             l_buffer);&lt;br /&gt;&lt;br /&gt;        -- The DBMS_LOB.READ procedure dictates that its output be RAW.&lt;br /&gt;        -- This next procedure converts that RAW data to character data.&lt;br /&gt;        l_text_buffer := UTL_RAW.CAST_TO_VARCHAR2(l_buffer);&lt;br /&gt;&lt;br /&gt;        -- Now that we have character data (up to l_amount characters long),&lt;br /&gt;        -- chunk it out so that we can call DBMS_OUTPUT (which only accepts&lt;br /&gt;        -- arguments less than or equal to 255 characters).&lt;br /&gt;        FOR j IN 1..CEIL(LENGTH(l_text_buffer) / l_break_at) LOOP&lt;br /&gt;            DBMS_OUTPUT.PUT_LINE(SUBSTR(l_text_buffer&lt;br /&gt;                                 ,      (((j - 1) * l_break_at) + 1)&lt;br /&gt;                                 ,      LEAST(LENGTH(l_text_buffer)&lt;br /&gt;                                              -&lt;br /&gt;                                              ((j - 1) * l_break_at)&lt;br /&gt;                                        ,     l_break_at)));&lt;br /&gt;        END LOOP;&lt;br /&gt;&lt;br /&gt;        -- For the next iteration through the BLOB, bump up your offset&lt;br /&gt;        -- location (i.e., where you start reading from).&lt;br /&gt;        l_offset := l_offset + l_amount;&lt;br /&gt;    END LOOP;&lt;br /&gt;EXCEPTION&lt;br /&gt;    WHEN OTHERS THEN&lt;br /&gt;        DBMS_OUTPUT.PUT_LINE('!ERROR: ' || SUBSTR(SQLERRM,1,247));&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-7013874139865191160?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/7013874139865191160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=7013874139865191160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/7013874139865191160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/7013874139865191160'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/08/oracle-sql-to-read-blob.html' title='Oracle SQL to read a BLOB'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-5768656818404929579</id><published>2010-03-26T09:17:00.009Z</published><updated>2010-06-04T10:05:53.758+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comet scala lift tutorial fix'/><title type='text'>Fixing Michael Galpin's Comet Tutorial</title><content type='html'>I recently stumbled across the following tutorial on Comet:&lt;br /&gt;&lt;br /&gt;Build Comet applications using Scala, Lift, and jQuery&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/ajax/tutorials/wa-aj-comet/index.html"&gt;http://www.ibm.com/developerworks/ajax/tutorials/wa-aj-comet/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was interested in this tutorial as comet is an alternative architecture to Ajax.  In Ajax the browser makes calls (polls) to the web server in the background and then updates the users web page.  This issue with this approach is that there is a delay between a change and the polling call.  Also when you have a large number of users there will be a lot of polling calls hitting the web server that will not update the users web page (as there was no change).&lt;br /&gt;&lt;br /&gt;Comet takes an alternative approach where it keeps a connection open to the user's browser and uses this to push data to the use.  The benefit of this approach is that it essentially uses the &lt;a href="http://en.wikipedia.org/wiki/Observer_pattern"&gt;Observer Pattern&lt;/a&gt; an only has web traffic when an update has been made which reduces load on the web server and is more scalable. &lt;br /&gt;&lt;br /&gt;a potential replacement for Comet is &lt;a href="http://dev.w3.org/html5/websockets/"&gt;Web Sockets&lt;/a&gt; in HTML 5 but this isn't supported by all browsers at present.&lt;br /&gt;&lt;br /&gt;Anyway, when I tried building the tutorial I found that Michael had used a snapshot build to get new features but as this is a snapshot it is removed later from the Maven repositories giving this error:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[INFO] Failed to resolve artifact.&lt;br /&gt;&lt;br /&gt;Missing:&lt;br /&gt;----------&lt;br /&gt;1) net.liftweb:lift-core:jar:0.10-SNAPSHOT&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This is easily fixed by moving to the released version by changing pom.xml from:&lt;br /&gt;&lt;blockquote&gt;    &lt;dependency&gt;&lt;br /&gt;      &lt;groupId&gt;net.liftweb&lt;/groupId&gt;&lt;br /&gt;      &lt;artifactId&gt;lift-core&lt;/artifactId&gt;&lt;br /&gt;      &lt;version&gt;0.10-SNAPSHOT&lt;/version&gt;&lt;br /&gt;    &lt;/dependency&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;to the release version:&lt;br /&gt;&lt;blockquote&gt;    &lt;dependency&gt;&lt;br /&gt;      &lt;groupId&gt;net.liftweb&lt;/groupId&gt;&lt;br /&gt;      &lt;artifactId&gt;lift-core&lt;/artifactId&gt;&lt;br /&gt;      &lt;version&gt;0.10&lt;/version&gt;&lt;br /&gt;    &lt;/dependency&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;But unfortunately there were changes between the snapshot and the release which threw the following errors:&lt;br /&gt;&lt;br /&gt;[INFO] Compiling 7 source files to C:\dev\scala\lift\broken_auctionNet\target\cl&lt;br /&gt;asses at 1269595709118&lt;br /&gt;[ERROR] C:\dev\scala\lift\broken_auctionNet\src\main\scala\bootstrap\liftweb\Boo&lt;br /&gt;t.scala:44: error: value appendEarly is not a member of object net.liftweb.http.&lt;br /&gt;LiftRules&lt;br /&gt;[INFO]     LiftRules.appendEarly(makeUtf8)&lt;br /&gt;[INFO]               ^&lt;br /&gt;[ERROR] C:\dev\scala\lift\broken_auctionNet\src\main\scala\bootstrap\liftweb\Boo&lt;br /&gt;t.scala:66: error: not found: type Can&lt;br /&gt;[INFO]   private def createOne: Can[Connection] = try {&lt;br /&gt;[INFO]                          ^&lt;br /&gt;[ERROR] C:\dev\scala\lift\broken_auctionNet\src\main\scala\bootstrap\liftweb\Boo&lt;br /&gt;t.scala:87: error: not found: type Can&lt;br /&gt;[INFO]   def newConnection(name: ConnectionIdentifier): Can[Connection] =&lt;br /&gt;[INFO]                                                  ^&lt;br /&gt;[ERROR] C:\dev\scala\lift\broken_auctionNet\src\main\scala\org\developerworks\co&lt;br /&gt;met\AuctionActor.scala:18: error: type mismatch;&lt;br /&gt;[INFO]  found   : java.lang.String("auction")&lt;br /&gt;[INFO]  required: net.liftweb.util.Box[String]&lt;br /&gt;[INFO]     def defaultPrefix = "auction"&lt;br /&gt;[INFO]                         ^&lt;br /&gt;[ERROR] four errors found&lt;br /&gt;&lt;br /&gt;The Can errors are fixed by replacing Can with Box in the two places in boot.scala&lt;br /&gt;&lt;br /&gt;To fix the final error replace:&lt;br /&gt;&lt;blockquote&gt;def defaultPrefix = "auction"&lt;/blockquote&gt;&lt;br /&gt;by boxing it Full and make it an override as follows:&lt;br /&gt;&lt;blockquote&gt;override def defaultPrefix = Full("auction")&lt;/blockquote&gt;&lt;br /&gt;This fixes the errors but when you compile you get the following error in boot.scala:&lt;br /&gt;&lt;br /&gt;[INFO] Compiling 7 source files to C:\dev\scala\lift\broken_auctionNet\target\cl&lt;br /&gt;asses at 1269597516624&lt;br /&gt;[ERROR] C:\dev\scala\lift\broken_auctionNet\src\main\scala\bootstrap\liftweb\Boo&lt;br /&gt;t.scala:44: error: value appendEarly is not a member of object net.liftweb.http.&lt;br /&gt;LiftRules&lt;br /&gt;[INFO]     LiftRules.appendEarly(makeUtf8)&lt;br /&gt;[INFO]               ^&lt;br /&gt;[ERROR] one error found&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[ERROR] BUILD ERROR&lt;br /&gt;&lt;br /&gt;This is fixed by changing the line from:&lt;br /&gt;&lt;blockquote&gt;LiftRules.appendEarly(makeUtf8)&lt;/blockquote&gt;&lt;br /&gt;to:&lt;br /&gt;&lt;blockquote&gt;LiftRules.early.append(makeUtf8)&lt;/blockquote&gt;&lt;br /&gt;The code now compiles but when you start it using mvn jetty:run you get the following&lt;br /&gt;&lt;br /&gt;2010-03-26 10:06:39.757:WARN::failed org.mortbay.jetty.plugin.Jetty6PluginWebApp&lt;br /&gt;Context@33c78b{/,C:\dev\scala\lift\broken_auctionNet\src\main\webapp}: java.lang&lt;br /&gt;.VerifyError: (class: net/liftweb/util/EmptyBox, method: open_$bang signature: (&lt;br /&gt;)Ljava/lang/Object;) Can only throw Throwable objects&lt;br /&gt;2010-03-26 10:06:39.757:WARN::failed ContextHandlerCollection@171bc3f: java.lang&lt;br /&gt;.VerifyError: (class: net/liftweb/util/EmptyBox, method: open_$bang signature: (&lt;br /&gt;)Ljava/lang/Object;) Can only throw Throwable objects&lt;br /&gt;2010-03-26 10:06:39.757:WARN::failed HandlerCollection@1fddb33: java.lang.Verify&lt;br /&gt;Error: (class: net/liftweb/util/EmptyBox, method: open_$bang signature: ()Ljava/&lt;br /&gt;lang/Object;) Can only throw Throwable objects&lt;br /&gt;2010-03-26 10:06:39.757:WARN::Error starting handlers&lt;br /&gt;java.lang.VerifyError: (class: net/liftweb/util/EmptyBox, method: open_$bang sig&lt;br /&gt;nature: ()Ljava/lang/Object;) Can only throw Throwable objects&lt;br /&gt;        at net.liftweb.http.LiftRules$.&lt;init&gt;(LiftRules.scala:171)&lt;br /&gt;&lt;br /&gt;This is resolved by increasing the Scala version to 2.7.3 from:&lt;br /&gt;&lt;blockquote&gt; &lt;properties&gt;&lt;br /&gt;    &lt;scala.version&gt;2.7.2&lt;/scala.version&gt;&lt;br /&gt;  &lt;/properties&gt;&lt;/blockquote&gt;&lt;br /&gt;to:&lt;br /&gt;&lt;blockquote&gt; &lt;properties&gt;&lt;br /&gt;    &lt;scala.version&gt;2.7.3&lt;/scala.version&gt;&lt;br /&gt;  &lt;/properties&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-5768656818404929579?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/5768656818404929579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=5768656818404929579' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/5768656818404929579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/5768656818404929579'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/03/fixing-michael-galpins-comet-tutorial.html' title='Fixing Michael Galpin&apos;s Comet Tutorial'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-16661708608498399</id><published>2010-02-17T15:53:00.005Z</published><updated>2010-11-17T16:58:34.470Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle AQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Moving Exception Messages back onto the normal AQ queue</title><content type='html'>Just wrote some PL/SQL to restore messages on the exception queue back onto the normal queue.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;DECLARE&lt;br /&gt; dequeue_options dbms_aq.dequeue_options_t;&lt;br /&gt; enqueue_options dbms_aq.enqueue_options_t;&lt;br /&gt; message_properties dbms_aq.message_properties_t;&lt;br /&gt; message_handle RAW(32);&lt;br /&gt; message SYS.AQ$_JMS_TEXT_MESSAGE;&lt;br /&gt;  &lt;br /&gt; deq_qname varchar2(50);&lt;br /&gt; enq_qname varchar2(50);&lt;br /&gt; &lt;br /&gt; ex_no_messages exception;&lt;br /&gt; ex_dequeue exception;&lt;br /&gt; pragma exception_init (ex_no_messages, -25263);&lt;br /&gt; pragma exception_init (ex_dequeue, -25228);&lt;br /&gt; msg_count number;&lt;br /&gt;BEGIN&lt;br /&gt; deq_qname := 'SCOTT.AQ$_TBL_DATAFEED_REQ_E';&lt;br /&gt; enq_qname := 'SCOTT.DATAFEED_REQ';&lt;br /&gt;   &lt;br /&gt;   dequeue_options.wait := DBMS_AQ.NO_WAIT;&lt;br /&gt;   dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;&lt;br /&gt;   dequeue_options.dequeue_mode := dbms_aq.remove_nodata;&lt;br /&gt;&lt;br /&gt;   msg_count := 0;&lt;br /&gt;   &lt;br /&gt;   -- Enabling the exception queue for dequeue&lt;br /&gt;   dbms_aqadm.start_queue(deq_qname, false, true);&lt;br /&gt;   &lt;br /&gt;   LOOP   --Looping to find and remove the message from exception queue&lt;br /&gt; dbms_aq.dequeue(queue_name =&gt; deq_qname,&lt;br /&gt;  dequeue_options =&gt; dequeue_options,&lt;br /&gt;  message_properties =&gt; message_properties,&lt;br /&gt;  payload =&gt; message,&lt;br /&gt;  msgid =&gt; message_handle);&lt;br /&gt;  &lt;br /&gt; dbms_aq.enqueue(queue_name =&gt; enq_qname,&lt;br /&gt;     enqueue_options =&gt; enqueue_options,&lt;br /&gt;     message_properties =&gt; message_properties,&lt;br /&gt;     payload =&gt;message,&lt;br /&gt;     msgid =&gt; message_handle);&lt;br /&gt;  &lt;br /&gt;    dequeue_options.navigation := DBMS_AQ.NEXT_MESSAGE;&lt;br /&gt;  &lt;br /&gt; msg_count := msg_count + 1;&lt;br /&gt; &lt;br /&gt; DBMS_OUTPUT.PUT_LINE ('Processed ' || msg_count || ' messages');&lt;br /&gt; &lt;br /&gt; dequeue_options.navigation := DBMS_AQ.NEXT_MESSAGE;&lt;br /&gt;   END LOOP; &lt;br /&gt;&lt;br /&gt;   EXCEPTION -- exception handling&lt;br /&gt;     WHEN ex_no_messages THEN&lt;br /&gt;       DBMS_OUTPUT.PUT_LINE ('No of Messages Moved: '||msg_count);&lt;br /&gt;       COMMIT;&lt;br /&gt;  WHEN ex_dequeue THEN&lt;br /&gt;       DBMS_OUTPUT.PUT_LINE ('No of Messages Moved: '||msg_count);&lt;br /&gt;       COMMIT;&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-16661708608498399?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/16661708608498399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=16661708608498399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/16661708608498399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/16661708608498399'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/02/moving-exception-messages-back-onto.html' title='Moving Exception Messages back onto the normal AQ queue'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-4499661970174541544</id><published>2010-02-17T11:54:00.002Z</published><updated>2010-11-17T16:59:15.761Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle AQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Extracting data from a JMS Text message</title><content type='html'>Some useful SQL to extract data from a JMS Text message&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;SELECT SUBSTR(q.user_data.text_lob, INSTR(q.user_data.text_lob,'&lt;Special01Reference&gt;') + 20,7) "Special Reference",&lt;br /&gt;SUBSTR(q.user_data.text_lob,&lt;br /&gt;INSTR(q.user_data.text_lob,'&lt;User01ContactName&gt;') + 19,&lt;br /&gt;(INSTR(q.user_data.text_lob,'&lt;/User01ContactName&gt;')&lt;br /&gt;- INSTR(q.user_data.text_lob,'&lt;User01ContactName&gt;') - 19)&lt;br /&gt;) "Contact",&lt;br /&gt;SUBSTR(q.user_data.text_lob,&lt;br /&gt;INSTR(q.user_data.text_lob,'&lt;REF&gt;') + 5,&lt;br /&gt;(INSTR(q.user_data.text_lob,'&lt;/REF&gt;')&lt;br /&gt;- INSTR(q.user_data.text_lob,'&lt;REF&gt;') - 5)&lt;br /&gt;) "REF"&lt;br /&gt;,q.MSGID, q.CORRID, q.ENQ_TIME, q.DEQ_TIME, q.RETRY_COUNT,&lt;br /&gt;CASE WHEN q.Q_NAME = 'AQ$_TBL_XMLMSG_E' THEN 'FAIL' ELSE 'PASS' END as "successful",&lt;br /&gt;q.Q_NAME, length(q.user_data.text_lob) as "MSG Size", q.user_data.text_lob, q.user_data.text_vc&lt;br /&gt;FROM MSGUSER.TBL_XMLMSG q &lt;br /&gt;WHERE q.ENQ_TIME &gt; to_date('12-02-2010 00:00:00', 'dd-mm-yyyy hh24-mi-ss')&lt;br /&gt;AND q.Q_NAME = 'AQ$_TBL_XMLMSG_E'&lt;br /&gt;AND INSTR(q.user_data.text_lob,'&lt;User01ContactName&gt;Tester&lt;/User01ContactName&gt;') = 0 -- Exclude Test records&lt;br /&gt;ORDER BY q.DEQ_TIME desc, q.ENQ_TIME &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-4499661970174541544?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/4499661970174541544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=4499661970174541544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4499661970174541544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4499661970174541544'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/02/extracting-data-from-jms-text-message.html' title='Extracting data from a JMS Text message'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-2076839764198869187</id><published>2010-02-10T09:48:00.003Z</published><updated>2010-02-10T09:51:11.439Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='scala lift maven'/><title type='text'>Scala and Lift Maven Architypes</title><content type='html'>Maven Architype command line instructions to be used with Maven 2 to create new projects&lt;br /&gt;&lt;br /&gt;# Basic Scala maven type&lt;br /&gt;mvn org.apache.maven.plugins:maven-archetype-plugin:1.0-alpha-7:create -DarchetypeGroupId=org.scala-tools.archetypes -DarchetypeArtifactId=scala-archetype-simple -DarchetypeVersion=1.1 -DremoteRepositories=http://scala-tools.org/repo-releases -DgroupId=your.proj.gid -DartifactId=your-proj-id&lt;br /&gt;&lt;br /&gt;# Lift type for LIFT projects&lt;br /&gt;mvn archetype:generate -U -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype-blank -DarchetypeVersion=1.0 -DremoteRepositories=http://scala-tools.org/repo-releases -DgroupId=play -DartifactId=play -Dversion=1.0-SNAPSHOT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-2076839764198869187?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/2076839764198869187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=2076839764198869187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2076839764198869187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2076839764198869187'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/02/scala-and-lift-maven-architypes.html' title='Scala and Lift Maven Architypes'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-2077578486536403250</id><published>2010-01-27T16:23:00.001Z</published><updated>2010-01-27T16:25:34.656Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle AQ Tables JMS XML'/><title type='text'>Reading Oracle AQ JMS Text XML</title><content type='html'>Placeholder link to a great and very useful article on Oracle AQ JMS &lt;br /&gt;&lt;br /&gt;&lt;a href="http://rwijk.blogspot.com/2009/02/whats-in-my-jms-queue.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-2077578486536403250?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/2077578486536403250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=2077578486536403250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2077578486536403250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/2077578486536403250'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/01/reading-oracle-aq-jms-text-xml.html' title='Reading Oracle AQ JMS Text XML'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-6837704440563101346</id><published>2010-01-20T14:59:00.004Z</published><updated>2010-01-20T15:32:27.959Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='code snippets unix scripting'/><title type='text'>Listing today's files in a directory without using find</title><content type='html'>&lt;div&gt;Had an issue today where I needed to get the today's log files from a Unix directory but couldn't use find.  Normally I could use the time function in find to do this as follows where . is the directory to search from &lt;i&gt;(. is the current directory):&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;find . -mtime +0&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;However the only way I could get the date for the files was by using ls -al and then removing all the extra data to leave just the filename.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The following script takes an argument of the directory you want to list all the files with the current date:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;#!/bin/sh&lt;/div&gt;&lt;div&gt;die () {&lt;/div&gt;&lt;div&gt;    echo &gt;&amp;amp;2 "$@"&lt;/div&gt;&lt;div&gt;    exit 1&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[ "$#" -eq 1 ] || die "target directory argument required, $# provided"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;target=$1&lt;/div&gt;&lt;div&gt;myvar=`date "+%h %d"`&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;for file in `ls -al $target | grep "$myvar" | sed 's/[-drwx]* *[0-9] *[a-zA-Z0-9]* *[a-zA-Z0-9]* *[0-9]* *[a-zA-Z]* [0-9]* *[0-9]*:[0-9]* *\.*//'`; do&lt;/div&gt;&lt;div&gt;    echo $file&lt;/div&gt;&lt;div&gt;done&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-6837704440563101346?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/6837704440563101346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=6837704440563101346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6837704440563101346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6837704440563101346'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2010/01/listing-todays-files-in-directory.html' title='Listing today&apos;s files in a directory without using find'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-1809321076525573902</id><published>2009-11-02T14:39:00.001Z</published><updated>2009-11-02T14:39:28.521Z</updated><title type='text'>Testing my posterous account</title><content type='html'>I this message appears in twitter and on my blog then posterous has processed my email and put it both on my blog and on twitter &lt;p&gt;this is a test&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://paulfuller.posterous.com/testing-my-posterous-account-11"&gt;Paul's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-1809321076525573902?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/1809321076525573902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=1809321076525573902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/1809321076525573902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/1809321076525573902'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2009/11/testing-my-posterous-account.html' title='Testing my posterous account'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-4379080298507764256</id><published>2009-08-05T14:18:00.003+01:00</published><updated>2009-08-05T14:35:43.084+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GlassFish Java Development'/><title type='text'>How to fix the Glassfish Admin App</title><content type='html'>Recently we've been having intermittant issues with the GlassFish 2.1 (b.60e) Web Administration Console.  The behaviour is that after successfully login you get a HTTP 500 error instead of the web app As follows (minus colours)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;HTTP Status 500 - type Exception report&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;message&lt;/span&gt;&lt;br /&gt;descriptionThe server encountered an internal error () that prevented it from fulfilling this request.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;exception&lt;/span&gt;&lt;br /&gt;javax.servlet.ServletException: java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'sun_frameSet4'.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;root cause&lt;/span&gt;&lt;br /&gt;java.lang.RuntimeException: java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'sun_frameSet4'.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;root cause&lt;/span&gt;&lt;br /&gt;java.lang.reflect.InvocationTargetException&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;root cause&lt;/span&gt;&lt;br /&gt;javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found&lt;br /&gt;&lt;br /&gt;note The full stack traces of the exception and its root causes are available in the Sun GlassFish Enterprise Server v2.1 logs.&lt;br /&gt;Sun GlassFish Enterprise Server v2.1&lt;/blockquote&gt;&lt;br /&gt;At first we were told it was a jar class but I was skeptical as the appserver should keep those isolated from one application to another, however there is something I overlooked that creeps across applications which is the System Properties which are across the JVM.&lt;br /&gt;&lt;br /&gt;In the end the issue is down to how the TransformerFactory creates a new instance which uses system properties, more details follow:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Issue:&lt;/span&gt;&lt;br /&gt;The Admin app breaks displaying the http 500 error after a successful logon when the javax.xml.transform.TransformerFactory system property is set to a class that is not in its classpath.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Rationale:&lt;/span&gt;&lt;br /&gt;This is due to the way that the TransformerFactory is implemented which the Admin app calls to get an XML parser.&lt;br /&gt;&lt;br /&gt;To get an XML parser javax.xml.transform.TransformerFactory.newInstance()is called and this uses the following ordered lookup procedure to determine the TransformerFactory implementation class to load:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use the javax.xml.transform.TransformerFactory system property.&lt;/li&gt;&lt;li&gt;Use the properties file "lib/jaxp.properties" in the JRE directory. This configuration file is in standard java.util.Properties format and contains the fully qualified name of the implementation class with the key being the system property defined above. The jaxp.properties file is read only once by the JAXP implementation and it's values are then cached for future use. If the file does not exist when the first attempt is made to read from it, no further attempts are made to check for its existence. It is not possible to change the value of any property in jaxp.properties after it has been read for the first time.&lt;/li&gt;&lt;li&gt;Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API will look for a classname in the file META-INF/services/javax.xml.transform.TransformerFactory in jars available to the runtime.&lt;/li&gt;&lt;li&gt;Platform default TransformerFactory instance.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;see &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html#newInstance%28%29"&gt;http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html#newInstance()&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;System Setting are across the JVM and by default the javax.xml.transform.TransformerFactory system property is not set.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fix:&lt;/span&gt;&lt;br /&gt;Remove the javax.xml.transform.TransformerFactory system property and use one of the other methods to determine the TransformerFactory implementation class&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-4379080298507764256?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/4379080298507764256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=4379080298507764256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4379080298507764256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4379080298507764256'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2009/08/how-to-fix-glassfish-admin-app.html' title='How to fix the Glassfish Admin App'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-65314015712964409</id><published>2009-04-01T10:58:00.000+01:00</published><updated>2009-04-01T11:00:39.458+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code snippets unix scripting'/><title type='text'>Looping through a file search in unix</title><content type='html'>&lt;div&gt;Little handy script in unix to get file details from a find result&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;#!/bin/sh&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;# Find all the log files and loop through them&lt;/div&gt;&lt;div&gt;for file in `find $HOME -type f -name \*.log`; do&lt;/div&gt;&lt;div&gt;  # Get the file details&lt;/div&gt;&lt;div&gt;  ls -al $file&lt;/div&gt;&lt;div&gt;done&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-65314015712964409?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/65314015712964409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=65314015712964409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/65314015712964409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/65314015712964409'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2009/04/looping-through-file-search-in-unix.html' title='Looping through a file search in unix'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-932432557568179960</id><published>2009-03-19T08:41:00.000Z</published><updated>2009-03-19T08:51:22.643Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GlassFish ESB WinXP Netbeans'/><title type='text'>GlassFish ESB Netbeans Server Starting Issue</title><content type='html'>Been having a few issue while doing the OpenESB  tutorials &lt;a href="http://wiki.open-esb.java.net/Wiki.jsp?page=OpenESBIntroductionTutorial"&gt;http://wiki.open-esb.java.net/Wiki.jsp?page=OpenESBIntroductionTutorial&lt;/a&gt; in that the GlashFish server doesn't connect up in Netbeans.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Symptoms:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the Server's tab in NetBeans you right click start on GlashFish V2, it starts up in the Glassfish Log but you get a time out and the GUI displays the server as not started.  You can also go to the Admin console on &lt;a href="http://localhost:4848"&gt;http://localhost:4848&lt;/a&gt; and everything looks fine and dandy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Solution or at least the solution I found:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I seem to have a wierd setup where I mapped localhost to a MS Loopback Adaptor address, however when you ping this in cmd you still get the IP loopback address of 127.0.0.1.  I came to the conclusion that the server is taking the 127.0.0.1 IP and netbeans is resolving it to the MS Loopback address, so I change my host file c:\windows\system32\drivers\etc\hosts so that localhost is mapped back to the 127.0.01 IP loopback address.  Hey presto it now seems to work fine.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-932432557568179960?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/932432557568179960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=932432557568179960' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/932432557568179960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/932432557568179960'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2009/03/glassfish-esb-netbeans-server-starting.html' title='GlassFish ESB Netbeans Server Starting Issue'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-4513589793726926110</id><published>2009-03-11T08:39:00.000Z</published><updated>2009-03-11T10:25:32.110Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='servicemix maven jbi esb undeploy'/><title type='text'>Manually undeploying a Service Assembly in ServiceMix</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Adding this entry mainly as a reference for myself.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;The issue is that there is a a maven jbi plug-in deploy job but not an undeploy job which from a configuration management point of view is plain stupid.  Anyway if you have a maven service mix project that you've deployed the service assembly using the maven command:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102);"&gt;mvn jbi:projectDeploy&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Then you're going to have fun undeploying it as apparently there is no undeploy task see &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.nabble.com/How-to-undeploy-a-SA-in-serviceMix-td16736845.html"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;http://www.nabble.com/How-to-undeploy-a-SA-in-serviceMix-td16736845.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; or &lt;/span&gt;&lt;/span&gt;&lt;a href="http://markmail.org/message/67pysr5olbq6wazt"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;http://markmail.org/message/67pysr5olbq6wazt&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; this can be done in ant (great another technology to use !) or manually by doing:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102);"&gt;Stop ServiceMix&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102);"&gt;Go to &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102);"&gt;&lt;servicemixhome&gt;/data/smx/serviceassemblies &amp;amp; delete the service assembly folder&lt;/servicemixhome&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102);"&gt;Restart &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: normal; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102);"&gt;ServiceMix&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;To do this in ant you use the command:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic; line-height: 19px; "&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 102);"&gt;ant -f servicemix-ant-task.xml -Dsm.username=smx -Dsm.password=smx -Dsm.service.assembly.name=NAME_OF_THE_SA undeploy-service-assembly&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;see &lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;a href="http://www.infobean.de/2008/11/how_to_undeploy_a_serviceassem.html"&gt;http://www.infobean.de/2008/11/how_to_undeploy_a_serviceassem.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Update:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Instead of using&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;mvn jbi:projectDeploy &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 13px; white-space: pre; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;-DforceUpdate=true&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="line-height: 13px; white-space: pre; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Clear ServiceMix by stopping ServiceMix, deleting everything in the &lt;servicemix&gt;/data and restarting.  Then just copy the jar from the &lt;serviceassembly&gt;/target/&lt;name&gt;.jar to the &lt;servicemix&gt;/hotdeploy directory.&lt;/servicemix&gt;&lt;/name&gt;&lt;/serviceassembly&gt;&lt;/servicemix&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Appatently the force update redeploy's artifacts that don't need to be redeployed, see &lt;a href="http://cwiki.apache.org/SM/discussion-forums.html#nabble-p21474293"&gt;http://cwiki.apache.org/SM/discussion-forums.html#nabble-p21474293&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-4513589793726926110?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/4513589793726926110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=4513589793726926110' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4513589793726926110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/4513589793726926110'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2009/03/manually-undeploying-service-assembly.html' title='Manually undeploying a Service Assembly in ServiceMix'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-6206681802140114970</id><published>2009-03-05T11:55:00.000Z</published><updated>2009-03-05T11:58:48.022Z</updated><title type='text'>First blog using iBlogger</title><content type='html'>Here we go, just bought the app at a discounted rate of 59p or $0.99 after scanning the reviews.&lt;br/&gt;&lt;br/&gt;It works :-)&lt;br/&gt;&lt;div class="iblogger-footer"&gt;&lt;br clear="all"/&gt;&lt;p style="text-align:right;font-size:10px;"&gt;[Posted with &lt;a href="http://illuminex.com/iBlogger/index.html"&gt;iBlogger&lt;/a&gt; from my iPhone]&lt;/p&gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-6206681802140114970?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/6206681802140114970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=6206681802140114970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6206681802140114970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6206681802140114970'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2009/03/first-blog-using-iblogger.html' title='First blog using iBlogger'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-6315759374715085748</id><published>2009-03-05T11:15:00.000Z</published><updated>2009-03-05T11:30:08.097Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='money economy'/><title type='text'>Savings products cut</title><content type='html'>&lt;div&gt;Had a leaflet from Barclays yesterday entitled "Important information about our savings accounts" and was shocked to see that on page 3 they have cut 22 products leaving just 8 remaining.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now some of this looks like some housekeeping such as removing the postal savings account but I was supprised to see the 30 and 60 day savings disappear, so it looks like it's not just the lending products that are being cut.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Details of the accounts are as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Current range of Savings Accounts (8)&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Active Savings&lt;/li&gt;&lt;li&gt;e-Savings&lt;/li&gt;&lt;li&gt;e-Savings Reward&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Nest-egg Savings&lt;/li&gt;&lt;li&gt;Barclays Cash ISA&lt;/li&gt;&lt;li&gt;Tax Haven ISA&lt;/li&gt;&lt;li&gt;Children's Savings Account&lt;/li&gt;&lt;li&gt;BarclayPlus&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Accounts no longer available to new savers (22)&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Barclays Easy Saver&lt;/li&gt;&lt;li&gt;Barclays Flexible Saveings&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Barclays Instant Cash Account&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Barclays Instant Savings Account&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Barclays Openplan Savings&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Barclays TESSA-Only ISA&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bonus Saver&lt;/li&gt;&lt;li&gt;junior BarclaysPlus&lt;/li&gt;&lt;li&gt;Postal Account&lt;/li&gt;&lt;li&gt;Baby Postal Account&lt;/li&gt;&lt;li&gt;Barclays Savings Reserve&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Day to Day Savings&lt;/li&gt;&lt;li&gt;Prime Account&lt;/li&gt;&lt;li&gt;Regular Savings Account&lt;/li&gt;&lt;li&gt;Reward Saver&lt;/li&gt;&lt;li&gt;Savings Builder&lt;/li&gt;&lt;li&gt;Tax Beater Cash ISA&lt;/li&gt;&lt;li&gt;Tracker Savings Account&lt;/li&gt;&lt;li&gt;30 Day Savings Account&lt;/li&gt;&lt;li&gt;60 Day Savings Account&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Premier Openplan Savings&lt;/li&gt;&lt;li&gt;Premier Cash Reserve&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-6315759374715085748?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/6315759374715085748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=6315759374715085748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6315759374715085748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/6315759374715085748'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2009/03/savings-products-cut.html' title='Savings products cut'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583433532713190768.post-3357583392335920335</id><published>2007-02-10T22:44:00.000Z</published><updated>2007-02-10T22:44:16.785Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>First Post:  ESB Intro</title><content type='html'>For a good start into the world of the Enterprise Service Bus this is a good intro:&lt;br /&gt;&lt;br /&gt;http://www.infoq.com/presentations/Enterprise-Service-Bus&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583433532713190768-3357583392335920335?l=paulfulleruk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulfulleruk.blogspot.com/feeds/3357583392335920335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7583433532713190768&amp;postID=3357583392335920335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/3357583392335920335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583433532713190768/posts/default/3357583392335920335'/><link rel='alternate' type='text/html' href='http://paulfulleruk.blogspot.com/2007/02/first-post-esb-intro.html' title='First Post:  ESB Intro'/><author><name>Paul</name><uri>http://www.blogger.com/profile/09205232387563455500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
