Wednesday Sep 26, 2007

Building WSRP is now more easier

As I mentioned in my last entry, WSRP project is migrated from jax-rpc to jax-ws. What does that means for developers, is that you are no longer required to download jwsdp binaries and configure ExtenalDependencies.xml before build WSRP project. So, it is now a trivial task to download, build and deploy WSRP project with Portlet Container. Once you have deployed portlet container on Glassfish, you are only few steps away from deploying WSRP binaries. Here are these steps:

1. Download WSRP source code

(svn checkout https://wsrp.dev.java.net/svn/wsrp/trunk wsrp --username guest) . Press enter when prompt for password

2. mvn package verify

3. cd dist

4. java -jar wsrp-configurator.jar <GLASSFISH_HOME> <GLASSFISH_DOMAIN_DIR>

5. Restart Glassfish

6. Access http://<host>:<port>/portletdriver

It's up!!!

Let me know is you face any problem. 

 


Tuesday Sep 11, 2007

Changing Webservice stack for WSRP project

Before starting WSRP 2.0 implementation on java.net WSRP project, one of the major to-do item for WSRP team was to migrate WSRP 1.0 implementation from underlying old jax-rpc to new jax-ws stack. For this work, we had created a separate branch sometime back. We have completed this migration work and Rajesh has just announced it on announce@wsrp.dev.java.net.The install instructions to checkout, build and install this branch are available here.

Tuesday Aug 28, 2007

JSR 286 : Portlet filter feature

One of the major new feature added in the Portlet technology by the JSR 286 is the Portlet Filter. A portlet filter is a Java component that can be used to modify portlet request and response before/after any lifecycle method of the portlet is being executed. The concept of Portlet filter is same as that of servlet filter. The only difference is that a servlet has only one request handling method i.e. service() method and therefore there is only one type of the servlet filter. A portlet has four types of request handling methods and therefore there are 4 different types of portlet filters. The portlet API defines following interfaces for creating Portlet filter:

javax.portlet.filter.ResourceFilter (for serveResource method)

javax.portlet.filter.RenderFilter (for render method)

javax.portlet.filter.ActionFilter (for processAction method)

javax.portlet.filter.EventFilter (for processEvent method)


Each of the above filter interface contains a single doFilter(\*Request, \*Response, FilterChain chain) method which differs in the type of request and response object. For example, doFilter() method in ActionFilter takes ActionRequest and ActionResponse while doFilter() method of RenderFilter takes RenderRequest and RenderResponse objects. Each of the above filter interface extends a common base interface called javax.portlet.filter.PortletFilter. This common base interface contains init(javax.portlet.filter.FilterConfig filterConfig) and destroy() methods. The init(...) method makes sure that every Filter has access to a FilterConfig object from which it can obtain its initialization parameters, a reference to the PortletContext which it can use, for example, to load resources needed for filtering tasks. The init() and destroy() methods of a portlet filter are being called only once during their lifetime.


A single filter class can provide filter functionality for more than one lifecycle methods and also a single filter can provide filter functionality for more than one portlet. There can be multiple filter associated with one lifecycle method of a portlet. The javax.portlet.filter.FilterChain class (created by Portlet container) is used to invoke the sequence of filters applicable for a particular lifecycle method of a portlet. The doFilter() method of a portlet filter may create customized request and response objects by using \*RequestWrapper and \*ResponseWrapper classes and passing these wrappers to the doFilter() method of FilterChain.


In order to write a portlet filter, the developer is required to do the folowing 2 things :


1) Write a filter class - A filter class should implement one or more of the above mentioned four interfaces and should provide a no argument public constructor. The filter class is also required to override init() and destroy() method of javax.portlet.filter.PortletFilter interface.


2) Add entry of filter in portlet.xml - After writing a portlet filter class, it can be configured by adding following 2 xml fragements in portlet.xml.



<filter>

<filter-name>RenderFilterOne</filter-name>

<filter-class>com.test.filter.RenderFilterOne</filter-class>

<lifecycle>RENDER_PHASE</lifecycle>

<lifecycle>ACTION_PHASE</lifecycle>

<init-param>

<name>message</name>

<value>Filter 1 - portlet-container 2.0 Filter demo :)</value>

</init-param>

</filter>



<filter-mapping>

<filter-name>RenderFilterOne</filter-name>

<portlet-name>HelloWorld</portlet-name>

</filter-mapping>


The first xml fragment defines a filter by providing a logical name to it. It tell portlet container about the filter class and the lifecycle phases supported by it. You can specify initialization parameters also.


The Second xml fragment specifies the portlet(s) for which this filter will be applicable. You can specify a single portlet name or mapping to a group of portlets using the ‘\*’ as a wildcard.


Saturday May 05, 2007

Blog(s).sun.com

Just noticed that we can access our blogs using http://blogs.sun.com as well as http://blog.sun.com

 

Friday May 04, 2007

Technical note on WSRP

A very good tech note has been published on docs.sun.com to understand WSRP in general and its implementation in Sun Java System Portal Server in particular. This document is many steps ahead of what I had written  in my article last year. These kinds of publication will certainly help in creating an awareness for WSRP as this spec is still missing wider audiance. 

Thursday Apr 26, 2007

StAX (JSR 173)

A very nice introduction of Streaming API for XML is provided in this article. In summary, we can understand StAX by compairing it with SAX :

 SAX (Simple API for XML) : Push API (observer design pattern... Parser feed the content of the document to the application as soon as they see it). Only reading of document is allowed.

StAX (Streaming API for XML) : Pull API (iterator design pattern... Client program asks the parser for the next piece of information ). Both read and write are possible.

There are many similarities in these 2 APIs -

Ease of Use, CPU and memory efficient, Forward only and No XPath capability. 

Java Web Service tutorial is an excellent document to learn more about StAX. 

Wednesday Apr 25, 2007

JAXB Tip

If you are using JAXB for XML to Java binding and geting javax.xml.bind.UnmarshalException: Unexpected element blah blah blah... the first thing you can do is to call setValidating(true) on Unmarshaller object. i.e.

   JAXBContext jc = JAXBContext.newInstance("com.sun.java.xml.ns.portlet.portlet_app_2_0");
   // create an Unmarshaller
   Unmarshaller u = jc.createUnmarshaller();
    u.setValidating(true); 

This will help in getting little more details about the problem. For example, if your schema has declared <sequence> constraints on certain elements and your XML is not following it, the validation handler will report that certain tag name (element) is NOT allowed at this place and what all possible elements can appear after certain element.

One caveat here - setValidating() is a deprecated method and should be used only for debugging purpose. 

Wednesday Apr 04, 2007

JEE6

JSR 313 for next JEE release i.e. JEE6 has been submitted. The prime focus for this JEE version will be extensibility and profiles. The bad news for portal/portlet community is that neither JSR 168 nor JSR 286 will be part of JEE6 :(.

Monday Mar 26, 2007

Web Server for Ruby On Rails applications

Although Ruby on Rails framework bundles WEBrick webserver (100% written in Ruby) for developing/testing rails application, it is not the only web server that supports rails. Infact, a rails application can run on almost any webserver. The steps for running rails application using  FastCGI module (bundles with the product) on Sun Java System Webserver 7 are mentioned in this article.

Read this, if you want to know what diferent deployment options people tried for rails applications.  Here is another article that describes some benchmark results for various deployment configurations.

Friday Mar 23, 2007

Top 100 Most Influential People in IT

eWeek has released a list of Top 100 Most Influential People in IT and James Gosling has been ranked 64. Other guys from Sun included in this list are Simon Phipps and Andy Bechtolsheim. Read more.

Friday Mar 16, 2007

Worth of my blog - one more

So, after reading about the worth of other's blog, I also tried it access the popularity of my blog. It is fun :)

 


My blog is worth $1,129.08.
How much is your blog worth?

Wednesday Mar 14, 2007

Difference between Java Application Platform SDK and Java EE SDK

Inder has described this nicely in his blog. I am trying to summarize it as : 

JavaEE5 SDK : JavaEE5 implementation (aka Glassfish) + API doc + tutorial + Blueprints + Samples

Java Application Platform SDK : JavaEE5 SDK + PortletContainer + JWDP (it is not JWSDP) + Open ESB + Access Manager


Thursday Mar 08, 2007

XMLPortletRequest

Subbu (WSRP spec lead) has proposed a new interface called XMLPortletRequest to portlet 2.0 and WSRP2.0 expert group. He has described about this interface in his 2 blogs (part1 and part2).

Wednesday Mar 07, 2007

Web Services in Java

I was just looking for various Web Services stack available in java. I found that most the JEE application server have their own implementations but few application server also bundles open source implementations. Here is a list of WS stacks

Glassfish 

JBossWS

BEA WS 

Oracle 10g 

Glue 

AXIS

XFire

Celtix

If you know any other implementation, please let me know. 

 

Monday Mar 05, 2007

What is JSR 188

"Write Content Once, Deliver It To Any Device!"

 If you are writing web application which can be accessed from different devices (such as desktop browser, mobile devices), your application is required to deliver content according to the device capability. For example,  your web page contains images but accessing devices is not supporting the rendering of images OR your web page contains too much data to be handled by the bandwidth of accessing device.

 Customizing content for different devices with widely varying capabilities, and for different users, requires significant investments of time and effort.


CC/PP which stands for Composite Capabilities/Preferences Profiles is designed by W3C to help developer in writing such applications. CC/PP is a system to describe what is called as delivery context - a set of attributes to tell what an user agent (web browser) is capable of doing and what are user preferences. The idea is that, upon requesting a web page, browser communicate their CC/PP info to the server. The CC/PP aware server then can adapt the content acording to the device capability.


JSR 188 has created a set of standard java API for providing CC/PP information to any java application. 


Here is a good article to know more about Composite Capabilities/Preference Profiles and JSR 188.
About

manishkg

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today