IN operator in iBatis

March 12, 2009 by Anoop

Another confusion will occur while working with iBatis , when we need to do something like

where id in (100,101,102)

We can simply do it as like this.

where r.status = ‘A’
<dynamic >
<isNotNull property=”Clients”>
and c.id
<iterate property=”Clients” open=”IN (” close=”)” conjunction=”,”>
#Clients[]#
</iterate>
</isNotNull>
<isNotNull property=”SMT”>
and t.smt_id
<iterate property=”SMT” open=”IN (” close=”)” conjunction=”,”>
#SMT[]#
</iterate>
</isNotNull>
</dynamic>

where SMT and Clients are lists, which can be any lists,  that I put into the parameter map(here am passing java.util.HashMap as parameter map).

Logging in Ibatis

March 12, 2009 by Anoop

It will be too useful if you enable loggin in iBatis. Developers can use it extensively for debugging. Just add these lines at log4j.xml and Bingo!!! you will start getting logs for each ibatis and sql threads in  your system.

<logger name=”com.ibatis” additivity=”false”>
<level value=”debug”/>
<appender-ref ref=”PIPELINE”/>
</logger>

<logger name=”java.sql” additivity=”false”>
<level value=”debug”/>
<appender-ref ref=”PIPELINE”/>
</logger>

<logger name=”org.springframework” additivity=”false”>
<level value=”info”/>
<appender-ref ref=”PIPELINE”/>
</logger>

where PIPELINE is the appender name I declared in the log4j.xml.

Tail Note : Don’t forget to remove iBatis logging when your system moves to production. The log file size will become more than 10 MB in 10 minutes of usage. :)

Getting Class of an Object in Flex

February 26, 2009 by Anoop

Frequently we may come across one requirement when we will be having one object and we want to know which class this object belongs to. In java, its as simple as object. getClass();

Flex also provides us with a class, mx.utils.ObjectUtil, which we can use for this purpose.

ObjectUtil.getClassInfo(object)

will return information about the class, and properties of the class, for the specified Object.

  • name: String containing the name of the class;
  • properties: Sorted list of the property names of the specified object.

These are the properties we can use for that.

Alert.show(ObjectUtil.getClassInfo(faultEvent.target).name);

Its often useful to know which class had generated some fault event and we can use the above code. :)

Happy Coding

Add / Subtract Date using Calendar

January 7, 2009 by Anoop

Many methods of Date() class is deprecated and the replacement is Calendar class. The following example shows how to display last month’s date.

java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat(“dd-MMMM-yyyy);
Calendar c1 = Calendar.getInstance();
c1.add(Calendar.MONTH,-1);
System.out.println(“Last Month Date : ” + dateFormat.format(c1.getTime()));

Flex interview Questions

December 30, 2008 by Anoop

Some of the flex interview questions I had come across and asked to me. For the time being just putting up the questions. Will keep on adding answers whenever time permits. :) All the best, folks…

1) What’s the difference between Java and AS3 getters and setters?(*)

In Java, getter and setter methods have to be explicitly called.
While in AS3, they’re called automatically and externally
indistinguishable from public properties.

For instance trace(myClass.foo) might be referencing a public property
or it might be referencing the method “public get foo():Object”.  It
makes no difference to an external class.

You can expand on this a bit more to describe why this is useful.  The
implications are that, unlike in Java, all variables in a class are
generally public.  Java standard practices are to create only public
getters and setters while keeping the variables private.  The reason
for only allowing methods to be publicly accessible is so that 1) they
can be overridden and 2) their implementation can change without
altering class interface.

AS3 addresses both of these concerns because, as described above, a
public property can be replaced with a getter and setter without
changing the interface.  And an inherited public property can actually
be overridden by a subclass.

For example, this is valid:
public class A
{
public var foo:Object;
}

public class B extends A
{
override public function get foo():Object{return ‘bar’};
override public function set foo(value:Object):void{};
}

2) Explain how binding works in mxml components.
or
Explain 3 different ways to achieve data binding

Data binding is the process of tying the data in one object to another object. It provides a convenient way to pass data around in an application. Adobe Flex 2 provides three ways to specify data binding: the curly braces ({}) syntax and the <mx:Binding> tag in MXML and the BindingUtils methods in ActionScript.

Data binding requires a source property, a destination property, and a triggering event that indicates when to copy the data from the source to the destination. To use a property as the source of a data binding expression, the component must be implemented to support data binding, which means that the component dispatches an event when the value of the property changes to trigger the binding.

At compile time, the MXML compiler generates code to create ActionScript Watcher and Binding objects that correspond to the binding tags and expressions found in an MXML document. At run time, Watcher objects are triggered by change events that come from the constituent parts of binding source expressions; the Watcher objects then trigger Binding objects to execute bindings.

When you specify a property as the source of a data binding, Flex monitors not only that property for changes, but also the chain of properties leading up to it. The entire chain of properties, including the destination property, is called a “bindable property chain“. In the following example, firstName.text is a bindable property chain that includes both a firstName object and its text property:

<first>{firstName.text}</first>

Its not necessary that the binding executes automatically. In the following case the binding wont execute automatically as expected.

  1. Binding does not execute automatically when you change an entire item of a dataProvider property.
  2. Binding also does not execute automatically for subproperties of properties that have [Bindable] metadata.
  3. Binding also does not execute automatically when you are binding data to a property that Flash Player updates automatically, such as the mouseX property.

The executeBindings() method of the UIComponent class executes all the bindings for which a UIComponent object is the destination. All containers and controls, as well as the Repeater component, extend the UIComponent class. The executeChildBindings() method of the Container and Repeater classes executes all of the bindings for which the child UIComponent components of a Container or Repeater class are destinations. All containers extend the Container class. However, you should only use the executeBindings() method when you are sure that bindings do not execute automatically.

3) What’s the difference between ChangeWatcher.watch, and BindingUtils.bindProperty?
4) Why would you want to keep a reference to a ChangeWatcher and call unwatch()?
5)How does Flex event system works?
6) What is event Bubbling?

The mechanism through which event objects are passed from the objects that generates an event up through the containership hierarchy

7) How do you add event listeners in mxml components and AS3 components?
8) What does calling preventDefault() on an event do?  How is this enforced?
9)What is the difference between Flex 2.0 and Flex 3.0?

These are some of the differences :

  • Native support for Adobe AIR – Flex 3 introduces new components and incorporates the Adobe AIR development tools into the SDK and Flex Builder.
  • Persistent framework caching – You can make Flex 3 applications as small as 50K when leveraging the new Flash Player cache for Adobe platform components. In fact the size of the resulting swf size had reduced for a larger bit.
  • Flex Builder productivity enhancements – Flex Builder 3 introduces refactoring support, new profilers for performance and memory tuning, and code generation tools for data access.
  • Integration with Creative Suite 3 – The Flex Component Kit for Flash CS3 allows Flash CS3 users to build components that can be seamlessly integrated into a Flex application, while Flex Builder 3 adds new wizards for importing assets from CS3 applications as skins.
  • Advanced DataGrid – The Advanced DataGrid is a new component that adds commonly requested features to the DataGrid such as support for hierarchical data, and basic pivot table functionality.
  • First steps toward open source Flex. As a first step toward making Flex an open source project, Adobe have opened up the Flex and Flex Builder bug tracking system to the public, as well as published detailed roadmap information.
10) What are some ways to specify styles on components?
11) What is the problem with calling setStyle()
12) How do you use css styles in flex?
13) Explain different ways of using style sheets in Flex application.
14) Explain the difference between creating an effect and setting the target as opposed to adding an effectListener
15) What do repeater components do?
16. How do you use a repeater?
17) How do you identify a component created in a repeater?
18) Explain the component lifecycle.
or
Explain the UI component life cycle including important methods like initialize() and                    createChildren()
or
What are the methods called when a UI component is intialized?

Preinitialize: The application has been instantiated but has not yet created any child components.
Initialize: The application has created child components but has not yet laid out those components.
creationComplete: The application has been completely instantiated and has laid out all components

19) How invalidate / commitProperties work specifically
20) Questions about dataServices
21) A general understanding of MVC
or
How do you implement MVC in your application
or
what is MVC and how do you relate it to flex apps?
22) Is it possible to make httpService Requests synchronous?(*)

A: No.Basically all service calls from flex, whether it is HTTPService, WebService or RemoteService, are asynchronous. But there are methods through which you can crack this and make these calls synchronous.

Solution 1 (I got from many sites): Create XMLHttpRequest with Javascript in Flex, and call a server data with the parameters we will give to the object.For example: xmlHttpRequest.open(“GET”,”http://localhost/Default.aspx”,false);

1. Request Type: GET or POST
2. Requested URL
3. Communication Type: true for asynchronous, false for synchronous.

Solution 2 (My Own Solution ;) ): Create one result handler for the service call and whatever processing you need to execute synchronously, put all in that result handler and BINGO!!! :)

23) I need to load an image from flickr into my application. Do I need a crossdomain.xml file on flickr?
24) Explain crossdomain.xml and why is it used?
25)Describe what the IResponder interface contains and how is it used?
26) What is the difference between httpService and Data Service? (*)

Flex allows three types of RPC services: HttpService, WebServices, and RemoteObject Services. In Flex, using the “RemoteObjects specifies named or unnamed sources and connects to an Action Message Format (AMF) gateway, whereas using the HTTPService and WebService use named services or raw URLs and connect to an HTTP proxy using text-based query parameters or XML”. Specifically, HTTPServices use raw HTTP requests, WebServices use the SOAP protocol and RemoteObjects uses AMF3. “RemoteObject provides two advantages over HTTP or SOAP. First, while the AMF protocol uses HTTP to transfer packets, the data is transferred in a binary format that is natively understood by the Flash Player. As a result, data can move across the network more quickly and it can be deserialized more rapidly than text-based formats such as XML. Both of these result in performance gains, particularly where large sets of data are involved. Secondly, RemoteObject provides signficant productivity advantages. The remoting service, which runs on your server, automatically marshalls data between AMF and your server-side language (e.g., PHP, Java, C#). As a result, you can directly call methods on your PHP objects without having to write an XML REST interface or create web service interfaces”.

27) How do you generate random numbers within a given limit with actionscript?
28) Have you built any components with actionscript? If so explain how you did it?
29)How do you implement push on a flex applications?
30)How do you implement push with flex data services?
31)I am going to add images into a tag. How will it resize itself?
32)What is a resource Manager??
33)What are the similarities between java and flex
34)How do you implement drag and drop on components that do not support ondrag and ondrop?
35)What is a drag manager?
36)Can you write to the file system from flex?
37)HOw do you call javascript from Flex?

The ExternalInterface API makes it very simple to call methods in the enclosing wrapper. You use the static call() method, which has the following signature:

flash.external.ExternalInterface.call(function_name:
    String[, arg1, ...]):Object;

The function_name is the name of the function in the HTML page’s JavaScript. The arguments are the arguments that you pass to the JavaScript function. You can pass one or more arguments in the traditional way of separating them with commas, or you can pass an object that is deserialized by the browser. The arguments are optional.

The following example script block calls the JavaScript f() function in the enclosing wrapper by using the call() method:

<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        import flash.external.*;

        public function callWrapper():void {
            var f:String = "changeDocumentTitle";
            var m:String = ExternalInterface.call(f,"New Title");
            trace(m);
        }
    </mx:Script>
    <mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>

On your HTML page, you define a function as you would any other JavaScript function. You can return a value, as the following example shows:

<SCRIPT LANGUAGE="JavaScript">
    function changeDocumentTitle(a) {
        window.document.title=a;
        return "successful";
    }
</SCRIPT>

This feature requires that the embedded movie file have an id attribute. Without it, no call from your Flex application will succeed.

The call() method accepts zero or more arguments, which can be ActionScript types. Flex serializes the ActionScript types as JavaScript numbers and strings. If you pass an objct, you can access the properties of that deserialized object in the JavaScript, as the following example shows:

<mx:Script>
    public function callWrapper():void {
        var o:Object = new Object();
        o.lname = "Danger";
        o.fname = "Nick";
        var f:String = "sendComplexDataTypes";
        ExternalInterface.call(f,o);
    }
</mx:Script>

Flex only serializes public, nonstatic variables and read-write properties of ActionScript objects. You can pass numbers and strings as properties on objects, simple objects such as primitive types and arrays, or arrays of simple objects.

The JavaScript code can then access properties of the object, as the following example shows:

<SCRIPT LANGUAGE="JavaScript">
    function sendComplexDataTypes(a:Object) {
        alert("Welcome " + a.fname + " " + a.lname + "!");
    }
</SCRIPT>

You can also embed objects within objects, as the following example shows. Add the following code in your Flex application’s <mx:Script> block:

<mx:Script>
    public function callWrapper():void {
        var f:String = "sendComplexDataTypes";
        var o:Object = new Object();
        o.lname = "Danger";
        o.fname = "Nick";
        o.b = new Array("DdW","E&T","LotR:TS");
        var m:String = ExternalInterface.call(f,o);
    }
</mx:Script>

The code triggers the following JavaScript in the wrapper:

<SCRIPT LANGUAGE="JavaScript">
    function sendComplexDataTypes(a) {
        // Get value of fname and lname properties.
        var m = ("Welcome " + a.fname + " " + a.lname + "!\n");
        // Iterate over embedded object's properties.
        for (i=0; i<a.b.length; i++) {
            m = m + a.b[i] + "\n";
        }
        alert(m);
    }
</SCRIPT>

Flex and Flash Player have strict security in place to prevent cross-site scripting. By default, you cannot call script on an HTML page if the HTML page is not in the same domain as the Flex application. However, you can expand the sources from which scripts can be called.

You cannot pass objects or arrays that contain circular references. For example, you cannot pass the following object:

var obj = new Object();
obj.prop = obj; // Circular reference.

Circular references cause infinite loops in both ActionScript and JavaScript.

38) what are three ways to skin a component in flex?
39)what is state? what is the difference between states and ViewStack?
40)how does item renderer work? How do I add item renderer at runtime?
41)what keyword allows you to refer to private variables of a class?
42)how polymorphism works on actionscript?
43)how do you overload functions in actionscript?
44)How to override Managers (example : PopupManager)
45)what is dynamic keyword used for?
or
What is the difference between sealed class and dynamic classes?

Dynamic Keyword is used to make a class dynamic. A dynamic class defines an object that can be altered at run time by adding or changing properties and methods. You create dynamic classes by using the dynamic attribute when you declare a class. For example, the following code creates a dynamic class named Protean:

dynamic class Protean {
  private var privateGreeting:String = "hi";
  public var publicGreeting:String = "hello";
  function Protean () {
    trace("Protean instance created");
  }
}

If you subsequently instantiate an instance of the Protean class, you can add properties or methods to it outside the class definition. For example, the following code creates an instance of the Protean class and adds a property named aString and a property named aNumber to the instance:

var myProtean:Protean = new Protean();
myProtean.aString = "testing";
myProtean.aNumber = 3;
trace (myProtean.aString, myProtean.aNumber); // output: testing 3

Properties that you add to an instance of a dynamic class are run-time entities, so any type checking is done at run time. You cannot add a type annotation to a property that you add in this manner.

You can also add a method to the myProtean instance by defining a function and attaching the function to a property of the myProtean instance. The following code moves the trace statement into a method named traceProtean():

var myProtean:Protean = new Protean();
myProtean.aString = "testing";
myProtean.aNumber = 3;
myProtean.traceProtean = function () {
    trace (this.aString, this.aNumber);
}
myProtean.traceProtean(); // output: testing 3

Methods created in this way, however, do not have access to any private properties or methods of the Protean class. Moreover, even references to public properties or methods of the Protean class must be qualified with either the this keyword or the class name. The following example shows the traceProtean() method attempting to access the private and public variables of the Protean class.

myProtean.traceProtean = function () {
    trace(myProtean.privateGreeting); // output: undefined
    trace(myProtean.publicGreeting); // output: hello
}
myProtean.traceProtean();

Sealed Class

A class that is not dynamic, such as the String class, is a sealed class. You cannot add properties or methods to a sealed class at run time.

46) What are runtime shared libraries?
47) What is cairngorm ? How do you use it? Have you worked with
cairngorm?
or
Explain the lifecycle of a Cairngorm action.
or
What frameworks familiar with

Some of the frameworks in Flex are : EasyMVC, Cairngorm, Mate, Swiz. I had worked only on cairngorm and so putting down its details :

Overview of Cairngorm

What is Cairngorm? Cairngorm is fundamentally a methodology for breaking up your application code by logical functions; by data, by user views, and by the code that controls everything. This is routinely referred to as MVC, or Model, View, and Control.

The Pieces of Cairngorm

·Model Locator: Stores all of your application’s Value Objects (data) and shared variables, in one place. Similar to an HTTP Session object, except thatits stored client side in the Flex interface instead of server side within a middle tier application server.

· View: One or more Flex components (button, panel, combo box, Tile, etc) bundled together as a named unit, bound to data in the Model Locator, andgenerating custom Cairngorm Events based on user interaction (clicks,rollovers, dragndrop.)

· Front Controller: Receives Cairngorm Events and maps them to CairngormCommands.

· Command: Handles business logic, calls Cairngorm Delegates and/or other Commands, and updates the Value Objects and variables stored in the ModelLocator

· Delegate: Created by a Command, they instantiate remote procedure calls(HTTP, Web Services, etc) and hand the results back to that Command.

· Service: Defines the remote procedure calls (HTTP, Web Services, etc) to connect to remote data stores.

How the Pieces Fit Together

Cairngorm basically works like this: Your client interface is comprised of Views. The Views use Flex binding to display data contained in the Model Locator. The Viewsgenerate Events based on user gestures such as mouse click, button press, and drag & drop. Those Events are “broadcast” and “heard” by the Front Controller, which is a map of Events to Commands. Commands contain business logic, create Delegates toperform work, handle responses from Delegates, and update the data stored in theModel Locator. Since Views are bound to the data in the Model Locator the Viewsautomatically update when the Model Locator data is changed. Delegates callServices and hand results back to Commands, and are optional but recommended.Services make remote data calls and hand the results back to Delegates.

48) What keyword allows you to implement abstraction better?
49) What is ClassFactory and why is it needed?
50) What design patterns have you used? in Actionscript and java?
or
What design patterns do you commonly use?
51) What is AMF?

AMF is a binary format based loosely on the Simple Object Access Protocol (SOAP). It is used primarily to exchange data between an Adobe Flash application and a database, using a Remote Procedure Call. Each AMF message contains a body which holds the error or response, which will be expressed as an ActionScript Object. AMF was introduced with Flash Player 6, and this version is referred to as AMF 0. It was unchanged until the release of Flash Player 9 and ActionScript 3.0, when new data types and language features prompted an update, called AMF 3.

52) What are the Advantages and Disadvantages of flex

Flex advantages: very capable IDE, Images are part of a flash movie and can’t be downloaded directly, supported by Adobe, XML based language, ability to leverage flash components into the application, great speed increase over previous versions of flash (if that was even possible).

Flex disadvantages: Needs the flash player, Need to learn and XML based language and possibly actionscript to build real applications

53) What is the difference between Flex and AIR application?

The “Flex Framework” is a collection of AS3 classes and components used in developing RIAs. “Flex Builder” is an IDE used to develop “Flex Applications.” If you use something other than Flex Builder to develop in Flex, you need to download the Flex SDK to compile. The end result of a compiled Flex Application is an SWF file (Same as Flash). With the compiled SWF file, a user only needs to have Flash Player installed to run the application. Most Flex apps are developed, deployed to a server and then a web browser is used to serve the application to the user for use.

AIR is an alternative delivery system for Flex Applications, replacing the web server and browser so to speak. It’s primary purpose is for deploying RIAs to a user’s desktop, independant of an internet connection. AIR, also allows for the use of HTML, AJAX etc. So an AIR Application could be a collection of all these things, compiled together. To run an AIR Application, you need AIR Runtime installed on your computer.

54) List out the advantages and disadvantages of using Raster vs Vector images with flex.
55) What are the config files that are used to connect Java and Flex applications?

data-management-config.xml,
messaging-config.xml,
proxy-config.xml,
remoting-config.xml,
services-config.xml

56)Explain what a weak-referenced event listener is and why you’d use it?
57)Explain the invalidation model and how it works for properties, measuring and the display list.
58)What classes do you typically extend in the Flex SDK for creating GUI controls and why?
59)What is something you’ve coded that you were most proud of?
60)What is something you’ve coded that you were ashamed of?
61) What is the difference between width, explicitWidth, measuredMinWidth, measuredWidth, and percentWidth?

Like operator in iBatis

December 18, 2008 by Anoop

Its lots of confusion how to use the wildcard search in ibatis. Two ways are there.

1. Select * from risk_mst where name like #value#

here we can pass the parameter with % appended to it at java side itself. Or the alternate approach is

2. Select * from risk_mst where name like ‘%$value$%’

where value is the passed parameter

Execute an SQL script file in SQLPlus

December 9, 2008 by Anoop

To execute a script file in SQLPlus, type @ and then the file name.

SQL >  @{file}

For example, if your file was called script.sql, you’d type the following command at the SQL prompt:

SQL >  @script.sql

The above command assumes that the file is in the current directory. (ie: the current directory is usually the directory that you were located in before you launched SQLPlus.)

If you need to execute a script file that is not in the current directory, you would type:

SQL >  @{path}{file}

For example:

SQL >  @/oracle/scripts/script.sql

This command would run a script file called script.sql that was located in the /oracle/scripts directory.

Killing Oracle Sessions

December 9, 2008 by Anoop

Yesterday night I noticed that one of my update statement not at all executing in some table. It was late night and almost everyone had left home. I thought someone might have locked the table and thats causing the problem. I got interested and thought how can I force logout some other’s session. This is the solution. (you need dba rights for this ;P)

The SQL*Plus Approach

Sessions can be killed from within oracle using the ALTER SYSTEM KILL SESSION syntax.

First identify the offending session as follows:

SELECT s.sid,
       s.serial#,
       s.osuser,
       s.program
FROM   v$session s;

       SID    SERIAL# OSUSER                         PROGRAM
---------- ---------- ------------------------------ ---------------
         1          1 SYSTEM                         ORACLE.EXE
         2          1 SYSTEM                         ORACLE.EXE
         3          1 SYSTEM                         ORACLE.EXE
         4          1 SYSTEM                         ORACLE.EXE
         5          1 SYSTEM                         ORACLE.EXE
         6          1 SYSTEM                         ORACLE.EXE
        20         60 SYSTEM                         DBSNMP.EXE
        43      11215 USER1                          SQLPLUSW.EXE
        33       5337 USER2                          SQLPLUSW.EXE

The SID and SERIAL# values of the relevant session can then be substituted into the following statement:

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#';

In some situations the Oracle.exe is not able to kill the session immediately. In these cases the session will be “marked for kill”. It will then be killed as soon as possible.

Issuing the ALTER SYSTEM KILL SESSION command is the only safe way to kill an Oracle session. If the marked session persists for some time you may consider killing the process at the operating system level, as explained below. Killing OS processes is dangerous and can lead to instance failures, so do this at your own peril.

It is possible to force the kill by adding the IMMEDIATE keyword:

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

This should prevent you ever needing to use the orakill.exe in Windows, or the kill command in UNIX/Linux.

The NT Approach

To kill the session via the NT operating system, first identify the session as follows:

SELECT s.sid,
       p.spid,
       s.osuser,
       s.program
FROM   v$process p,
       v$session s
WHERE  p.addr = s.paddr;

       SID SPID      OSUSER                         PROGRAM
---------- --------- ------------------------------ ---------------
         1 310       SYSTEM                         ORACLE.EXE
         2 300       SYSTEM                         ORACLE.EXE
         3 309       SYSTEM                         ORACLE.EXE
         4 299       SYSTEM                         ORACLE.EXE
         5 302       SYSTEM                         ORACLE.EXE
         6 350       SYSTEM                         ORACLE.EXE
        20 412       SYSTEM                         DBSNMP.EXE
        43 410       USER1                          SQLPLUSW.EXE
        33 364       USER2                          SQLPLUSW.EXE

The SID and SPID values of the relevant session can then be substituted into the following command issued from the command line:

C:> orakill ORACLE_SID spid

The session thread should be killed immediately and all resources released.

The UNIX Approach

To kill the session via the UNIX operating system, first identify the session in the same way as the NT approach, then substitute the relevant SPID into the following command:

% kill -9 spid

If in doubt check that the SPID matches the UNIX PROCESSID shown using:

% ps -ef | grep ora

The session thread should be killed immediately and all resources released.

For further information see:

Adding Copyright Symbol

December 5, 2008 by Anoop

I was working in java to generate PDF report using itext. There I had one requirement for inserting one copy right symbol at footer. I thought of it to be difficult, but it turned around to be very very simple. Inside the string we need to put “\u00A9″ thats all. Copyright symbol is there in your app.

:)

My first techie post

December 5, 2008 by Anoop

Hi All,

I am happy to start a new technopedia blog apart from the existing blog “devilsoldier.wordpress.com”. Am a software engineer with more than 2 years experience in service industry. I am trying to scribble some technical tips and tricks which even I can use as a reference later. Infact I want to put down some of the small small findings I come across in my tec h life. Hope everyone will encourage this.

Thanks,

Anoop