<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Andy Piper&apos;s Blog</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/" />
    <link rel="self" type="application/atom+xml" href="http://dev2dev.bea.com/blog/andypiper/atom.xml" />
   <id>tag:dev2dev.bea.com,2008:/blog/andypiper//33</id>
    <updated>2008-05-14T11:26:37Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.31</generator>
 
<entry>
    <title>SpringSource announces SpringSource Application Platform (S2AP)</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2008/05/springsource_an.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2008/05/springsource_an.html</id>
    
    <published>2008-05-08T19:24:24Z</published>
    <updated>2008-05-14T11:26:37Z</updated>
    
    <summary>On April 30th SpringSource announced their application platform - a lightweight server framework based on OSGi, Spring and Spring-DM. Oh wait that sounds like BEA Event Server ...</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Product: WebLogic Event Server" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[So Billy Newport <a href="http://www.devwebsphere.com/devwebsphere/2008/05/springsource-ap.html">beat me to it</a>, blogging about SpringSource's (formerly Interface21) <a href="http://blog.springsource.com/main/2008/04/30/introducing-the-springsource-application-platform/">application platform</a>. Nevertheless I thought I would share a few thoughts on this since BEA has been shipping a <a href="http://edocs.bea.com/wlevs/docs20/get_started/overview.html">lightweight application platform</a> for a year now.

<p>First of all congratulations to all the folk at SpringSource on the release! I know many of them personally and they are all great guys, great engineers and forward thinking innovators.
Shipping an application platform is the next natual evolution for them and I look forward to their release stimulating further innovation from all the vendors in this space.

<p>Now of course I don't personally see this as innovation. Event Server (WLEvS) is a lightweight application platform built using <a href="http://edocs.bea.com/wlevs/docs20/index.html">OSGi, Spring and Spring-DM</a>. 
Indeed, as someone pointed out on TSSJ, BEA has been an active contributor to the Spring-DM project - and we have been using it in BEA products - since its inception. Spring-DM is central to WLEvS, it represents the programming model for WLEvS developers, much like it does in S2AS, and we have <a href="http://edocs.bea.com/wlevs/docs20/create_apps/overview.html#programming_model">extended</a> it using standard Spring hooks. Likewise we have a <a href="http://edocs.bea.com/wlevs/docs20/create_apps/deploy.html">deployment model based on OSGi bundles</a>, moniitoring, logging, management - the list goes on and I won't bore you with all the URLs. So you can see why claims that S2AS is ground-breaking in some way leave me a little nonplussed. Even OSGi-based LTW, which I think is one of the truly cool features of S2AS, <a href="http://www.eclipse.org/equinox/incubator/aspects/comparison_ajeer_aosgi.php">has been around for a while</a>. And the TSSJ comment that accessing OSGi services from webapps was a game-changing innovation, we have been doing for two years now! (We actually found that publishing OSGi services inside a webapp's JNDI tree made a lot more sense to users.)
<p>I do like the dynamic provisioning features of S2AS, although this is not a great deal different to the maven integration done by <a href="http://geronimo.apache.org/xbean/">xbean</a> and initially integrated into Spring-DM by your truly. The key thing is that the SpringSource guys have productized it with a <a href="http://www.springsource.com/repository">bundle repository</a> backing it. Indeed, that's really the essence of what they have done - taken a set of existing technologies, in various states of readiness, and integrated them into a cohesive, production-quality whole. When I talk to customers that's one of the things they like about Spring in general - it pulls together other open source projects in a way that makes them easy-to-use, with all of the integration issues resolved.
<p>I must talk a little about the choice of GPL3 license since it has generated a fair amount of controversy. In my opinion the use of GPL is a mistake. Here's why - SpringSource are a commercial outfit, ultimately they are valued on how well they are able to generate returns on their assets (consultants, IPR, user base etc). Free does not contribute to this. If something is free, regardless of whether it is GPL3 or ASL licensed, it does not contribute directly to this financial return. What matters is what is called in the literature "strategic complimentaries" (if you want the full story read my upcoming MBA thesis ;)) - basically stuff that you control (and can protect) that you can make money off that is driven by the usage of the free stuff. Things like training, consultancy, other proprietary software, support, subscriptions etc - all the things that SpringSource do so well. But the value derived from these things is dependent on one key ingredient - <em>market penetration of the free stuff</em>. The more the free stuff is accepted by the market, the more the stuff you make money off is worth. In fact it gets better than this - get enough penetration and customers will hesitate to use a competitor, a host of 3rd-party services will grow up around your free stuff (what are called "network effects") and customers will end up with switching costs that are too high to be worth contemplating - things like retraining all your developers, getting different tools etc, etc.
So penetration is the key. Now you tell me, which license - GPL3 or ASL - is likely to achieve more penetration? The answer is self-evident. So what if some big competitor copies your invention - your invention is free anyway so who cares - what matters is that it's increasing the value of the stuff that matters do you. So I'm with Billy - the application platform will become commodity and <em>its in SpringSource's interest for this to be the case</em>.
<p>Ok I'll get off my soapbox. Just to round this out, look out for the upcoming WLEvS 3.0 release, due out in the summer, which incorporates many of the features - and more - being considered by SpringSource for S2AS 2.0. Clustering, management console, single system image just to name a few.]]>
        
    </content>
</entry>
<entry>
    <title>Co-operative Open Source</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2008/03/cooperative_ope.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2008/03/cooperative_ope.html</id>
    
    <published>2008-03-04T10:29:37Z</published>
    <updated>2008-03-04T10:29:49Z</updated>
    
    <summary>When open source works well it Really Works.</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Product: WebLogic Event Server" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[I just finished fixing a bug in the unreleased development version of <a href="http://edocs.bea.com/wlevs/docs20/index.html">WebLogic Event Server</a>. The code in question leveraged some advanced features of the <a href="http://www.springframework.org/">Spring Framework</a> and was something that I had had to code around in EvS 2.0. Fortunately, for me, I had spent a bunch of time with <a href="http://blog.springsource.com/main/author/juergenh/">Juergen Hoeller</a> at <a href="http://www.springone.com/display/SpringOne08/Home">SpringOne</a> last year discussing some of the ways we were trying to use Spring in EvS and how we were running into a few problems. The free beer that BEA provided at the event was a great persuader and I subsequently raised a bunch of enhancement JIRA's which Juergen fixed for me (<a href="http://opensource.atlassian.com/projects/spring/browse/SPR-3609">SPR-3609</a>, <a href="http://opensource.atlassian.com/projects/spring/browse/SPR-3364">SPR-3364</a>, <a href="http://opensource.atlassian.com/projects/spring/browse/SPR-3608">SPR-3608</a> for the curious).
<p>The great thing is that since EvS is essentially an open platform, we can leverage these technologies bringing value-added functionality to market more quickly. Even better SPR-3608 turned out to be absolutely essential for EvS 2.0 and so, since Spring is open source, I was able to make the fix myself and allow EvS 2.0 to ship on time. Now that we are working on EvS 3.0 - which is based on Spring 2.5.x - I am able to pick up the official fix from Juergen and don't have to maintain a forked version of Spring 2.0.5.
<p>This experience is not unique. Many features in <a href="http://www.springframework.org/osgi">Spring-DM</a>, which we use heavily in EvS, were influenced by EvS requirements (or coded by me!). Although the SpringSource folks are quick to challenge stupid ideas, they are also cognizant of the fact that customers drive their business, and <a href="http://blog.springsource.com/main/author/costinl/">Costin</a> graciously accepted the majority of my requests and submissions for Spring-DM. In fact one of the key features of Spring-DM - <a href="http://static.springframework.org/osgi/docs/1.0.1/reference/html/bnd-app-ctx.html#bnd-app-ctx:extender">automatic activation of application contexts</a>, which is essentially the <a href="http://edocs.bea.com/wlevs/docs20/create_apps/deploy.html">EvS deployment model</a> - was conceived and implemented by a BEA engineer.
<p>As an engineer who has had to deal with a somewhat more glacial approach from other organizations, the approach is a breath of fresh air. And the key is open-ness - the open-ness of the EvS platform approach and the opensourciness [?] of many of the technologies that we leverage - not just Spring. This gives a great deal of comfort to our customers, since their commitment to our platform is not a case of vendor lock-in, but more a synergistic union of open technologies. They benefit not just from a fast turnaround on development, but wider understanding and support of the underlying technologies.
<p>And the bug? Too embarrassing to discuss.]]>
        
    </content>
</entry>
<entry>
    <title>WebLogic Event Server - Why we used Spring</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2007/08/weblogic_event.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2007/08/weblogic_event.html</id>
    
    <published>2007-08-29T10:58:17Z</published>
    <updated>2007-08-29T11:21:18Z</updated>
    
    <summary>WebLogic Event Server (WLEvS) makes heavy use of the Spring framework and Spring-OSGi. Why did we do this? What benefits does it give us?</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Product: WebLogic Event Server" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[I have now been working on WLEvS for about 8 months. Before that time I was heavily involved with the development of <a href="http://www.springframework.org/osgi">Spring-OSGi</a> and making sure that it met the needs of WLEvS. 
<p>
Why the interest in Spring? What has BEA to gain by so extensively using an Open Source technology in one of its products? Well the answer is actually pretty easy. Event Driven Architectures (EDA) are now reaching the mainstream both in terms of interest and in terms of development. They are a key part of Gartner's Extreme Transaction Processing (XTP) vision for the future - a vision in which BEA is currently in pole position. But enough of the marketing, developers want to know what it means for them in terms of their day-to-day jobs. At a development level EDA is significantly different to things like Java EE and thus requires new programming paradigms and environments. So building event driven applications requires something other than Java EE, but Java EE has a key advantage - its a standard and everyone is familiar with it. Love it or hate it is pretty easy to find developers with Java EE experience. But what happens when you need to do something new? Proprietary APIs are no good - all customers are wary of "vendor lock-in", and developers especially so. The answer is pretty simple - <em>use something that developers are already familiar with</em>. Hence, in a word, Spring. 
<p>
BEA has a pretty long and positive history with Spring, as evidenced on our <a href="http://dev2dev.bea.com/spring/">Spring resource page</a>. But more than just providing a familiar programming environment, Spring provides a powerful extension mechanism for event server developers and a user friendly way of accessing <a href="http://www.osgi.org">OSGI services</a> via Spring-OSGI. Furthermore we have used Spring 2.x's extension mechanism to implement WLEvS' <a href="http://edocs.bea.com/wlevs/docs20/create_apps/overview.html#programming_model">domain specific language for network assembly</a>. The nice thing about this is that if you don't know Spring you don't have to use it, but if you want to go deeper you still can. 
<p>
The simple things are easy and the difficult things are possible, or as the Spring folks are fond of saying, "simple <em>and</em> powerful."]]>
        
    </content>
</entry>
<entry>
    <title>Spring 2.0 and Message Driven POJOs</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2006/07/spring_20_and_m_1.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2006/07/spring_20_and_m_1.html</id>
    
    <published>2006-07-17T11:52:04Z</published>
    <updated>2006-09-12T20:56:21Z</updated>
    
    <summary>Message Driven POJOs are a new feature in Spring 2.0. In my SpringOne talk I demonstrated Message Driven POJOs running on WebLogic Server. Here I describe the example in more detail and its deployment.</summary>
    <author>
        <name>andypiper</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[One of the new features of Spring 2.0 is message driven-POJO's or
MDP's. These are like MDB's but do not require the EJB framework. In
Spring 2.0 you get a lot of different options for creating MDP's but
in general you simply need to implement a JMS message listener and
wire it into Spring. 
<p>
I have implemented an <a href="http://dev2dev.bea.com/blog/andypiper/archive/mdp.jar">MDP sample</a> attached to this arcticle. It
requires <a href="http://maven.apache.org/">maven2</a> to build, so make sure you download and install that first.
<p>
Take a look at MessageTraderBean.java in the sample. The guts
of the implementation is onMessage() which simply receives a quote on
a JMS topic and prints it out:

<pre>
  public void onMessage(Message msg) {
    ObjectMessage tm = (ObjectMessage) msg;
    try {
      Quote quote = (Quote)tm.getObject();
      if (quote.getShares() > tradeLimit) {
        log("Trade " + quote.toString() + " was denied");
      }
      else {
        lastQuote = quote.toString();
        log("Received new quote : " + lastQuote);
      }
    }
    catch(JMSException ex) {
      ex.printStackTrace();
    }
  }
</pre>
Note how there is no extraneous framework code and indeed no references to Spring at all - the beauty of dependency injection!
<p>
In order to the wire up the MDP we need a Spring configuration file
which is src/main/webapp/WEB-INF/applicationContext.xml. Inside you
can see various Spring classes being wired together, in this instance I am using <code>org.springframework.jms.listener.DefaultMessageListenerContainer</code>. For more
information on these consult the <a href="http://static.springframework.org/spring/docs/2.0.x/api/index.html">Spring documentation</a>. The one
important thing to note here is the use of commonJ WorkManagers (I'm not going to show the code here since putting XML in a blog entry is such a pain!).
Since we are going to be running the sample on WebLogic Server we don't want to
start creating threads inside the application. Fortunately Spring 2.0
provides a way of deferring the asynchronous execution required by
MDP's to WorkManagers as well as simpler thread pooling schemes.  The
WorkManager we are referencing is defined in web.xml (in the same
directory) with WebLogic specific configuration in weblogic.xml. For
more information on configuring WorkManagers consult the <a href="http://e-docs.bea.com/wls/docs92/config_wls/self_tuned.html#understanding_work_managers">WLS
documentation</a>. For more information on Spring 2.0's TaskExecutor support consult the <a href="http://static.springframework.org/spring/docs/2.0.x/reference/scheduling.html">reference manual</a>.
<p>
In order to use the example you need to create an appropriate JMS
topic for publishing messages to. So fire up a server and start the
console.
<p>
First of all you will need to create a persistent store for the
server, so select Services->Persistent Stores and create a new
FileStore. The name doesn't matter. You can select "." as the
directory.
<p>
Next, you will need to create a JMS server using that persistent
store. This is where the names start getting important in order for
the Spring application to find the right topic. You will notice that I
have called the destinationName in the applicationContext.xml
"myserverJMSServer/spring-jms!quotes" which in English is translated
as "the JMS server myserverJMSServer with JMS module spring-jms and
topic quotes", so make sure that you call the new JMS server
"myserverJMSServer". So select Services->Messaging-> JMS Servers and
create a new JMSServer with that name and targetted at the persistent
store you just created. Make sure also that you select the running
server as a target.
<p>
Now you need a JMS module targetted at the JMS server. So select
Services->Messaging-> JMS Modules and create a new JMS module called
"spring-jms" and targetted at the running server. When asked if you
would like to add resources, accept and create a new Topic resource
called "quotes" and target it at myserverJMSServer. You don't need to
set the JNDI-name for the topic.
<p>
You are now ready to deploy the application. Copy
target/mdp-1.0-SNAPSHOT.war into the server's autodeploy
directory. You should get a flurry of debug messages, but no
exceptions. If you get an exception most likely you got one of the
names wrong when setting up JMS. You may have to kill the server and
start again if this happens since there was a bug in earlier releases
of Spring 2.0 that caused the server to spew endless exceptions if the
deployment names did not match. Hopefully this will not happen to you!
<p>
Once you have the app deployed, all that remains to do is to run the
client. You can see that the guts of the client is to publish a message to a topic:
<pre>
  public void example() throws RemoteException, JMSException, NamingException {
    Topic newTopic = null;
    TopicSession session = null;
    try {
      session =
        m_topicConnection.createTopicSession(false,   // non transacted
                                             Session.AUTO_ACKNOWLEDGE);
      
      newTopic = (Topic) m_context.lookup(TOPIC_JNDI_NAME);
    }
    catch(NamingException ex) {
      newTopic = session.createTopic(TOPIC_NAME);
      m_context.bind(TOPIC_JNDI_NAME, newTopic);
    }

    TopicPublisher sender = session.createPublisher(newTopic);
    ObjectMessage tm = session.createObjectMessage();
    String[] symbols = new String[] {
      "BEAS", "SUNW", "IBM"
    };
    float[] price = new float[] {
      13.10F, 4.50F, 89.89F
    };
    int[] shares = new int[] {
      1000, 50, 3000
    };
    for (int i = 0; i < symbols.length; i++) {
    tm.setObject( new Quote(symbols[i], price[i], shares[i]));
      sender.publish(tm);
    }
  }
</pre>
Note that here too there is no reference to Spring 2.0 in the code. The client does not even know it is interacting with a Spring application. To run the client you will need to include target/classes in your classpath to
pick up the client classes, so something like:
<pre>
eagle Andrew Piper> java -classpath "target/classes;$CLASSPATH" com.bea.spring.Client t3://eagle:7001

Beginning message.Client...

Success!  created topic: myserverJMSServer/spring-jms!quotes and published a message.

End message.Client...
</pre>
You should also see a message in the server console window:
<pre>
Received new quote : 1000 of BEAS@13.1
Received new quote : 50 of SUNW@4.5
Received new quote : 3000 of IBM@89.89
</pre>
Congratulations! Your message driven POJO works!
<p>
If you have problems with the example let me know. I ran this with Spring 2.0 rc2 which is available from the maven repositories as well as WebLogic Server 9.1. There shouldn't be any problem running the example on later releases of either Spring 2.0 or WebLogic Server.
]]>
        
    </content>
</entry>
<entry>
    <title>Spring Console Extension</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2006/07/spring_console_1.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2006/07/spring_console_1.html</id>
    
    <published>2006-07-06T10:11:56Z</published>
    <updated>2006-09-12T20:56:21Z</updated>
    
    <summary>Several folks have asked how to get the spring console extension working, and well they might since it can be tricky. Here I describe how to get it going.</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Product: WebLogic Server" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[The <a href="http://dev2dev.bea.com/pub/a/2005/09/spring_integration_weblogic_server.html">Spring on WebLogic Server</a> paper described a new console extension that can be downloaded with the <a href="http://commerce.bea.com/showproduct.jsp?family=SPRING&major=1.2.6&minor=0">Spring on WebLogic kit</a>. Many folks have had trouble getting this working, so I thought I would go over the setup once again and describe some of the gotchas. 
<br/><br/>
Essentially the console extension displays registered spring beans in a table and allows you to call the accessors and mutators. In order to do this the beans needs to be exported via JMX and then registered with the console extension. The extension comes in two pieces, a client piece that gets packaged with your spring application and does the registration, and a server piece that gets packaged with the server and adds the extension page.
<br/><br/>
The first step in configuration is to add the relevant configuration to your spring applicationContext.xml. The config will look something like this:

<pre>
&lt;bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter"&gt;
  &lt;property name="beans"&gt;
    &lt;map&gt;
      &lt;entry key="petclinic:service=clinic" value-ref="clinic"/&gt;
    &lt;/map&gt;
  &lt;/property&gt;
  &lt;property name="assembler"&gt;
    &lt;bean class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler"&gt;
      &lt;property name="interfaceMappings"&gt;
        &lt;props&gt;
          &lt;prop key="petclinic:service=clinic"&gt;org.springframework.samples.petclinic.jdbc.CachingClinic&lt;/prop&gt;
        &lt;/props&gt;
      &lt;/property&gt;
    &lt;/bean&gt;
  &lt;/property&gt;
  &lt;property name="listeners"&gt;
    &lt;list&gt;
      &lt;ref local="mediator"/&gt;
    &lt;/list&gt;
  &lt;/property&gt;
  &lt;property name="autodetect" value="true"/&gt;
  &lt;property name="server"&gt;
    &lt;bean class="org.springframework.jndi.JndiObjectFactoryBean"&gt;
      &lt;property name="jndiName" value="java:comp/env/jmx/runtime"/&gt;
    &lt;/bean&gt;
  &lt;/property&gt;
&lt;/bean&gt;
  
&lt;bean id="mediator" class="com.interface21.wl9.jmx.mediator.Mediator"&gt;
  &lt;property name="applicationName" value="petclinic"/&gt;
&lt;/bean&gt;
</pre>

The first part of the config identifies which beans you will be exporting, so value-ref should refer to another bean in your config. However note that it is also crucial that the true application name be used for the ObjectName "petclinic:service=clinic" (i.e. the petclinic part). The console extension looks up beans based on special JMX ObjectNames built from the application name, and if these are not in sync you will see no beans.
<br/><br/>
The same applies to the interface mappings section further down. Note too that you must expose you beans via an interface, you cannot simply export a regular JavaBean. It is this interface that appears in the interfaceMappings section. 
<br/><br/>
Finally the JMX exporter refers to a mediator that listens to events and publishes beans to the console as they are exported to JMX. The mediator section appears at the bottom, and again the applicationName must exactly match your application name, otherwise you will see no beans.
<br/><br/>
We plan to make the configuration of this much simpler very soon, so stay tuned. You can see the full set of properties for the <a href="http://static.springframework.org/spring/docs/1.2.x/api/org/springframework/jmx/export/MBeanExporter.html">MBeanExporter here</a>.
Likewise you can see the configuration properties for the <a href="http://static.springframework.org/spring/docs/1.2.x/api/org/springframework/jmx/export/assembler/InterfaceBasedMBeanInfoAssembler.html">InterfaceBasedMBeanInfoAssembler here</a>.
<br/><br/>
Once you have your config sorted, you need to build your application and include the console client extension. Unfortunately there was a bug in earlier builds of this and doubly unfortunately the builds of client and server pieces need to match. So I include both the <a href="http://dev2dev.bea.com/blog/andypiper/archive/spring-ext-server.jar">server jar</a> and <a href="http://dev2dev.bea.com/blog/andypiper/archive/spring-console-1.0.jar">client jar</a> libraries here. I have verified these with WebLogic Server 9.1 and Spring 2.0-m5. They should work fine with earlier versions of Spring. The extension has been designed so that the version of Sping used by the server piece does not need to match that used by the client piece. You will however need to bundle the appropriate Spring jars with your application also.
<br/><br/>
Finnaly you need to configure the server extension, this simply involves dropping the server jar into the console-ext directory of your WebLogic Server configuration. Start the server run the app and you should be good to go. The extension appears as an extra tab called "Spring Management Objects" under the deployment entry for your application in the console.
<br/><br/>
Gotchas - there are a bunch of things that can go wrong here:
</br>
<ul>
<li>If the tab does not appear then you likely have not configured the server extension correctly. The other possibility is that you are using autodeployment. autodeployment does <em>not</em> work with the console extension, you must use regular deployment.
</br>
<li>If you get the tab but no managed objects then most likely your application name does not match the one you configured. Also check that you are using the correct versions of the console extension, both server and client shown above.
</br>
<li>Clustering is not really supported at present - the beans are exported to the JMX server of the server on which they reside. The console must therefore also be running on this server. Its probably possible to use WebLogic Server's federated JMX server to look up beans remotely, but I have not tried that as yet.
</ul>]]>
        
    </content>
</entry>
<entry>
    <title>SpringOne Day 2 - Write-only code</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2006/06/springone_day_2_1.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2006/06/springone_day_2_1.html</id>
    
    <published>2006-06-19T12:44:50Z</published>
    <updated>2006-09-12T20:56:20Z</updated>
    
    <summary>Gregor Hohpe gives a keynote on &quot;where did all my beautitful code go&quot;</summary>
    <author>
        <name>andypiper</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[Gregor Kizcales had a family emergency and so Gregor Hohpe stepped in to give the keynote that he gave at TSSS earlier in the year. 
<p>
Overall it was a very interesting presentation discussing why code goes bad, choosing the right tool for the job and why tools can be bad for your health. Unfortunately my orginal blog entry for this got gunned down by IE's back button and my memory of the keynote is fading fast. One thing he did say that stuck was how often (4GL type) tools can be good for demos, but when you want to either (a) debug a problem or (b) enhance an existing large project then they often fail to deliver - leading to the thesis that they often produce write-only code. On the other hand custom languages (including XML) while expressive and simple, can suffer from a lack of tooling. Essentially Gregor was advocating considering TCO issues when doing development, which seems good advice to me.
<p>
Rod's keynote was essentially a corporate pitch.
<p>
My presentation was poorly attended :-P, probably not helped by the fact that I was in competition with Adrian talking about new features in Spring 2.0. However, I will make sure some of the information finds its way onto this site.]]>
        
    </content>
</entry>
<entry>
    <title>SpringOne Day 1 - Where is the A/C?</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2006/06/springone_day_1_1.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2006/06/springone_day_1_1.html</id>
    
    <published>2006-06-15T10:11:19Z</published>
    <updated>2006-09-12T20:56:20Z</updated>
    
    <summary>SpringOne kicks off with Rod Johnson and Adrian Colyer&apos;s keynote. BEA features prominently.</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Product: WebLogic Server" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[SpringOne has started and its <strong>hot</strong>! That has as much to do with the lack of air-conditioning as the quality of the presentations, although the latter are undeniably strong.
<p>
Rod kicked off with an overview of where Spring has come from and where it is going with Spring 2.0 - rc1 being released at the conference. 
<p>
Rod quipped that "Spring is everywhere!" but interestingly for me, so was BEA. BEA featured prominently in the keynote, both in our use of Spring (certification on WLS 9.0 and Pitchfork) and with customers' use of our technology (Voca). Its great to see BEA's blended strategy resonating with technologists who know.
<p>
Adrian Colyer went on to talk about the superiority of Spring 2.0 AOP support and then, more interestingly, discussed where Spring is going. For me the key quote was "we have the right building blocks", which is one of the things I really like about Spring. Spring is built on Spring, each feature is logically consistent and totally extensible. As a vendor its a veritable goldmine of productivity, for customers it must be a godsend!
<p>
I must just mention the BEA booth. We have free Belgian beer on the stand - I'm not sure when we will start serving, but if this heat keeps up we might get mobbed.]]>
        
    </content>
</entry>
<entry>
    <title>SpringOne Day 0</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2006/06/springone_day_0.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2006/06/springone_day_0.html</id>
    
    <published>2006-06-14T19:56:14Z</published>
    <updated>2006-09-12T20:56:20Z</updated>
    
    <summary>Travel woes</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Product: WebLogic Server" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[An inauspicious start to SpringOne, most people seem to be having problems actually getting here. My flight was delayed and then the traffic from Brussels to Antwerp was abysmal. Having finally arrived my satnav kindly took me through the center of Antwerp to get to the hotel - which wasn't there! I drove around a little, ended up driving under the river at which point the police closed the tunnel. 30 mins later I was finally back under the river and eventually found the hotel. 
<p>
Adrian Colyer's (I21) luck was just as bad it seems - plane delayed 2.5 hours and then a train that stopped virtually everywhere between Brussels and Antwerp.
<p>
The weather is abysmal also, good job I will be inside for the next 3 days! Lets hope the conference proper has fewer logistical difficulties than me.]]>
        
    </content>
</entry>
<entry>
    <title>Spring is just the ticket</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2006/01/spring_is_just_1.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2006/01/spring_is_just_1.html</id>
    
    <published>2006-01-31T10:39:27Z</published>
    <updated>2006-09-12T20:56:17Z</updated>
    
    <summary>BEA continues to execute on its &quot;blended&quot; opensource strategy with the release of the WebLogic Server Spring support kit for Spring 1.2.6 and &quot;WebLogic Real Time&quot;.</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Technology: Dev Toolbox" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[When we posted the <a href="http://commerce.bea.com/showproduct.jsp?family=SPRING&major=1.2.6&minor=0"> original Spring support kit</a> and <a href="http://dev2dev.bea.com/pub/a/2005/09/spring_integration_weblogic_server.html">whitepaper </a>back in the summer we were unsure of what the response would be. Sure, Spring has a loyal customer base, but would official WebLogic support just be another tick in the box for them? Ok, we put a few extra goodies in there such as <a href="http://dev2dev.bea.com/pub/a/2005/09/spring_integration_weblogic_server.html?page=3">clustered Spring remoting</a>, <a href="http://dev2dev.bea.com/pub/a/2005/09/spring_integration_weblogic_server.html?page=3">console support for Spring components</a> and a <a href="http://dev2dev.bea.com/pub/a/2005/09/spring_integration_weblogic_server.html?page=2">comprehensively integrated sample application</a>, but the real value of the package was the endorsement and certification by us on WebLogic Server. So the overwhelmingly positive response from both customers and the developer community took us completely by surprise! I am sure that this is not just a reflection of the undeniably <a href="http://sourceforge.net/projects/springframework">high-quality code</a>, but also the professionalism and dedication of our friends at <a href="http://www.interface21.com/">Interface21</a>.
<p>
Spring is definitely in the air. Our customers love it and we love it too. The simplicity of the programming model really is light years ahead of many current technologies. And, in case you thought this was just a marketing ploy by us, we have now certified <a href="http://commerce.bea.com/showproduct.jsp?family=SPRING&major=1.2.6&minor=0">Spring 1.2.6</a> on the newly released <a href="http://edocs.bea.com/wls/docs91/notes/new.html">Weblogic Server 9.1</a>. We have integrated the fixes required by WebLogic Server 9.0 into this release, including a well-known <a href="http://www.hibernate.org/120.html#A8">hibernate</a> issue. But that's not all. Most excitingly we have just released <a href="http://commerce.bea.com/showproduct.jsp?family=WLRT&major=1.0&minor=0">WebLogic Real Time</a> of which Spring 1.2.6 is an integral part.
<p>
If you have not tried Spring before then I encourage you to download the kit and jump right in.]]>
        
    </content>
</entry>
<entry>
    <title>Blogged to Death</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/andypiper/archive/2005/07/blogged_to_deat.html" />
    <id>http://dev2dev.bea.com/blog/andypiper/archive/2005/07/blogged_to_deat.html</id>
    
    <published>2005-07-09T14:50:34Z</published>
    <updated>2006-09-12T20:56:11Z</updated>
    
    <summary>I almost gave up trying to blog.</summary>
    <author>
        <name>andypiper</name>
        
    </author>
            <category term="Product: WebLogic Server" />
    
    <content type="html" xml:lang="en" xml:base="http://dev2dev.bea.com/blog/andypiper/">
        <![CDATA[Why is using the internet so hard sometimes? It took me half an hour to actually (re)discover how to add entries to my blog. Now you might surmise that I am a cynical English idiot, and while the first part might be true, several certificates from an institution in the Cambridgeshire fens indicate that the latter is not. Not on paper at least.
<p>
So why is it so hard sometimes? I'm no HCI expert, and I don't want to cover obvious ground, but to my mind part of the problem is that its so hard to incorporate feedback. 
<p>
What would be the process to improve my blog's accessibilty once logged in? Well, the obvious thing is to make the home page customized based on who's logged in and provide useful customized links from there. E.g. "Edit your blog". Fair enough, then I have to transmit this idea to whoever runs the website. Well, who is that? Maybe there's a feedback link on the home page? Let's assume there is (I'm not going to check). So I send feedback via e-mail trying to express my somewhat visual idea in words. The reply I usually get from this sort of feedback is "thanks for your feedback". And that's it. Sometimes if I make the feedback inflammatory enough I will get more personalized treatment - or a letter from appropriate corporate attorneys.
<p>
The net is one <a href="http://www.jwz.org/gruntle/">disgruntled</a> user and an unchanged site.
<p>
I'm a developer, I know customer feedback can sometimes be irksome, either because some customers don't necessarily understand what they are doing or because the feedback is about taste rather than function. But the vast majority of customers do know what they are doing and getting them in the feedback loop is vital to improving software.
<p>
In WebLogic Server development we are keen to "dogfood" our own products, this means that we use our products regularly to try and find useability problems (or, heaven forbid, bugs). As users and developers we can find and fix issues all at the same time, making a very tight feedback loop. We also have the benefit of being involved in customer escalations. When this happens to me, I am continually asking myself "why did this happen?", "why did the customer find it so hard?", "how can we make it easier to diagnose this problem?". If there are suitable answers I will usually implement them there and then in the development codeline, or raise a change request for some other appropriate part of the team.
<p>
Of course this is still feedback from a limited group. To make this really effective we have to make it easier for anyone's feedback to be incorporated. I'm not sure how, but it seems essential to me if software is ever going to delight rather than frustrate.]]>
        
    </content>
</entry>

</feed> 