Search blog

Saturday, July 20, 2013

Embedding Apache Axis2 webservices into Existing WebApplications using Maven- SimpleWebservice

Let us see how to create & deploy Webservices using Axis2 and integrate Axis2 into another web application with Maven and how to deploy the application in j2ee server and how to access the webservices.



Developing the Webservice: [eclipse with Maven plugin and tomcat]
Open eclipse and Create a new maven project with war as outcome of the project. Follow the below steps to create a maven web project in eclipse.





Click on Finish to create the project.
The project will be created as below


Now we need to setup the axis2 support to the project to create a webservice/ expose the given java class to the public over the internet and allow the access using the webservice using axis2.

Extract the axis2-web.rar and copy the axis2-web folder into webapp folder.
Click here to get axis2-web

Extract the modules.rar and copy the modules folder into webapp/WEB-INF folder.
Get modules.rar form axis2-web



Create a folder with name services under WEB-INF folder and add the services.list and version-1.4.1.aar files into it.  (Get from axis2-web)

Now the Axis2 configuration is done for the project, this is one time activity to make a java class as a webservice.

Create a Java Class to expose as Webservice.


Give Name as MyFirstWebService and click on Finish.
Create a public method to expose and provide access through webservice.
Create a method with name sayHello which accepts the sting message and returns the message appended with “Hello ”.


Create a folder with the Name of the Class MyFirstWebService under WEB-INF/services and create folder META-INF under MyFirstWebService folder.

Create an xml file with the name of services.xml under WEB-INF/services/MyFirstWebService/META-INF folder.
Edit the services.xml with the following content and save. This is to indicate the axis2 to create a webservice. Axis2 will publish the given service class as a webservice.

xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
                <service name="MyFirstWebService" scope="application">
                                <description>MyFirstWebService Sample </description>
   
                                <messageReceivers>
                                                <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
                                                                class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
                                                <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
                                                                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
                                </messageReceivers>
                                <parameter name="ServiceClass">com.samplews.sampleWebService.MyFirstWebService</parameter>
                               
                                <operation name="sayHello">
                                                <messageReceiver  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
                                </operation>

                </service>
</serviceGroup>


Create web.xml under WEB-INF folder.

Configure AxisServlet  and Axis2AdminServlet in web.xml.
xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                id="WebApp_ID" version="2.5">
                <servlet>
                                <display-name>Apache-Axis Servlet</display-name>
                                <servlet-name>AxisServlet</servlet-name>
                                <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
                </servlet>
                <servlet-mapping>
                                <servlet-name>AxisServlet</servlet-name>
                                <url-pattern>/servlet/AxisServlet</url-pattern>
                </servlet-mapping>
                <servlet-mapping>
                                <servlet-name>AxisServlet</servlet-name>
                                <url-pattern>*.jws</url-pattern>
                </servlet-mapping>
                <servlet-mapping>
                                <servlet-name>AxisServlet</servlet-name>
                                <url-pattern>/services/*</url-pattern>
                </servlet-mapping>
                <servlet>
                                <display-name>Apache-Axis Admin Servlet Web Admin</display-name>
                                <servlet-name>AxisAdminServlet</servlet-name>
                                <servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class>
                                <load-on-startup>100</load-on-startup>
                </servlet>
                <servlet-mapping>
                                <servlet-name>AxisAdminServlet</servlet-name>
                                <url-pattern>/axis2-admin/*</url-pattern>
                </servlet-mapping>
</web-app>



Update the pom.xml with the axis2 dependencies .(Get from axis2-web)

Now Right click on pom.xml and choose Run as – Maven install to build the project. This will compile the project and execute the test cases if any and finally will produce the war as an output under target folder as well as the m2 repository in your local box. 


Console:

Build Success message  with the below info.

[INFO] Installing D:\Workspaces\Poc\SampleWebService\target\SampleWebService.war to C:\Documents and Settings\sborra\.m2\repository\com\samplews\SampleWebService\0.0.1-SNAPSHOT\SampleWebService-0.0.1-SNAPSHOT.war
[INFO] Installing D:\Workspaces\Poc\SampleWebService\pom.xml to C:\Documents and Settings\sborra\.m2\repository\com\samplews\SampleWebService\0.0.1-SNAPSHOT\SampleWebService-0.0.1-SNAPSHOT.pom


Now you are ready and deploy the war file into the server (tomcat).
Or you can deploy by copying the war file into Tomcat/Webapps 0r jboss/server/default/deploy folder and run the server. Axis2 will prepare wsdl for you and it will expose your java service as a webservice and it will give the endpoint reference to access the operations.

Now after successful deploy of the app, your webservice is ready and you can verify by using the below wsdl format.



Testing the WSDL:

We can test the available webservice through the available wsdl URL using Soap UI or direct accessing by creating a client.
Let us see test the webservice using SOAP UI.

Open the Soap UI.


Enter the Project Name: MyFirstWebService-Test

Click on OK to create.



Project will get create in SoapUI editor with the operation details as below.  Expand the list, the operation will get displayed  and expand the operation and double click on Request 1 label or right click on it and choose Show RequestEditor.


The Request editor will get open on the right side panel, with the Request Template.
Fill the request and click on Go button to hit the service endpoint, fetch the response and display in the right side to the request panel.

You can see the request and response in the below.  Now the Webservice is ready and tested. 



You can monitor the deployed web services with the following URL.


It will ask for the user name and password.
Username: admin
Password: axis2

After successful login, Home page will be displayed as below.
 Click on Available Services link to see the currently Deployed services.Here you can see the deployed and active services.
Here is the sampleCode: SampleWebService


Wednesday, February 9, 2011

SSL Configuration in Tomcat

To install and configure SSL support on Tomcat x, you need to follow these simple steps

1. Download jsse from the below link:
http://java.sun.com/products/archive/jsse/
2. After download,either make it an installed extension on the system (extract the zip and copy the jar files jcert.jar, jnet.jar, and jsse.jar into jre/lib/ext ),
3. or else set an environment variable JSSE_HOME that points at the directory into which you installed JSSE.

4. To create a new keystore from scratch, containing a single self-signed Certificate, execute the following from a terminal command line

%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

5. This command will create a new file, in the home directory of the user under which you run it, named ".keystore".
6. After executing the above command, it will ask for the below details.
Enter password: changeit
Enter firstname and last name: Saikumar Borra
Enter your organizational unit : Java
Enter you Company Name: XXXXX
Enter your city : Hyd
Enter your State/province: AP
Enter the code of your conuntry: IN

Display all the data which you entered so far and ask for confirmation: Y

Fina;ly it will ask for password: changeit

Now the keystore and certificate part is done.

7. Uncomment the "SSL HTTP/1.1 Connector" entry in $CATALINA_HOME/conf/server.xml and tweak as necessary.

The configuration of SSL on Tomcat server is completed.

Now start the server and open the url https://localhost:8443/

For more detail go through the below url:
http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html

Monday, January 17, 2011

Pure MVC

Pure MVC is a Classic MVC Design meta-pattern.

Like MVC pattern Pure-MVC also have 3 Singletons - Model, View and Controller which are called Core Actors and Pure-MVC has another Singleton called Facade, which is to communicate with Core Actors(Model,View & Controller).

Architecture Diagram:


1. The Model caches named references to Proxies, which expose an API for manipulating the Data Model (including data retrieved from remote services).

2. The View primarily caches named references to Mediators, which adapt and steward the View Components that make up the user interface.

3. The Controller maintains named mappings to Command classes, which are stateless, and only created when needed.

4. The Façade initializes and caches the Core actors (Model, View and Controller), and provides a single place to access all of their public methods.

-> Observers & Notifications: are introduced in PureMVC to avoid the access or dependency of the flash events.
-> Notifications can be used to trigger the Command execution.
-> Mediator can send, declare interest in and receive Notifications.
-> Proxies send but not receive Notifications.

Facade:
Facade brokers your request to the Model,view and controller, so that your code doesn't need to import more classes and you don't need to work with them individually.
-> The Facade class automatically instantiate the core MVC Singletons in its constructor.
-> Concrete Facade is then used to access and notify the Commands, Mediators and Proxies that do the actual work of the system.

ApplicationFacade.as

package com.myapp;
{
import org.puremvc.as3.interfaces.*;
import org.puremvc.as3.pattern.facade.*;

public class ApplicationFacade extends Facade implements IFacade
{
public static const STARTUP:String="Startup";
public static const LOGIN:String="Login";
public static instance:ApplicationFacade =null;

public static function getInstance():ApplicationFacade {
if(instance==null){
instance = new ApplicationFacade();
}
return instance as ApplicaitonFacade;
}

override protected function initializeController(){
super.initializeController();
//Register the commands
registerCommand(STARTUP,StartupCommand);
}

public function startup(app:MyApp){
sendNotification(STARTUP,app);
}

}
}

Notifications:

PureMVC implements the Observer pattern so that the core actors and their collaborators can communicate in a loosely-coupled way and without platform dependency.

-> Notificaiton may have an optional "Body" which can be any actionscript object.
-> Notification also have an optional "Type" that can be used by the Notification recipient as a discriminator.

Flex Basic Concepts-Q&A

Q 1. Types of Binding
Ans: Using the curly braces ({}) syntax
Using ActionScript expressions in curly braces
Using the tag in MXML
Using bindings in ActionScript(BindingUtils)

Q 2. How to create your own event
Ans: Creating a subclass from the Event class
Using the Event metadata tag
Dispatching an event

Q 3. Event Bubbling
Ans: The mechanism through which event objects are passed from the objects that generates an event up through the containership hierarchy

Q 4. Life cycle of Flex Application/Component?
Ans: 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

Q 5. How you implement MVC in your Application
Ans: Cairngorm is based on the MVC model. It is specifically designed to facilitate complex state and data synchronization between the client and the server, while keeping the programming of the View layer detached from the data implementation.
The role of the View layer in a Cairngorm application is to throw events and bind to data stored in the Model. Components on the View can bind to Value Objects or other properties in the Model (data) layer.
In a Cairngorm Model, related data are stored in Value Objects (VOs), while simple variables can be stored as direct properties of the ModelLocator class. A static reference to the ModelLocator singleton instance is used by the View layers to locate the required data.
The Controller is the most sophisticated part of the Cairngorm architecture. The Controller layer is implemented as a singleton FrontController. The FrontController instance, which receives every View-generated event, dispatches the events to the assigned Command class based on the event's declared type.
The Command class then processes the event by running the Command class' execute() method, which is an ICommand interface method. The event object may include additional data if required by the developer. The execute() method can update the central Model, as well as invoke a Service class which typically involves communication with a remote server. The IResponder interface, which is also implemented by the Command class, includes onResult and onFault methods to handle responses returned from the invoked remote service.

Q 6. Difference btw Java and Flex Getters Setters
Ans: When it comes to getters and setters, Java and AS are quite different, in that getters and setters are part of the core ECMAScript language, whereas in Java, getters and setters are done through a naming convention.
In Java, it is almost never a good idea to make member variables public. If you do decide to make member variables public and then later want to change the interface to use getter/setter functions, you will have to modify all callers of your interfaces, which is onerous at best and in many cases, not possible (expecially when you are creating code that is used by other people).
Meanwhile, in ECMAScript, the externally visible interface doesn’t change when I go from a member variable to a getter/setter and back again. In some sense, the interface hiding is already accomplished in the language. Creating public member variables is “safe” in this sense.
Perhaps this is already obvious to all the AS-heads out there, but it took me a bit of time to get used to the concept.

Q 7. How many events are fired when your focus goes in one text box, you enter some text and then press tab.
Ans: PreinitializeHandler(), initializeHandler(), itemEditBegin, itemEditEnd, creationComplete()

Q 8. How you use styles different ways of using Style sheet
Ans: Using external style sheets, Using local style definitions, Using the StyleManager class ,Using the setStyle() and getStyle() methods, Using inline stylesLoading style sheets at run time

Q 9. How can you use two Styles at the same time
Ans: Using external style sheets and use Inline style commands

Q 10. Try to remember properties of few imp components
Ans:
< id="WeatherService" wsdl="http:/example.com/ws/WeatherService?wsdl" useproxy="false">
< !-- Bind the value of the ZIP code entered in the TextInput control to the ZipCode parameter of the GetWeather operation. -->
< name="GetWeather">

<>{zip.text}
< /mx:request>
< /mx:operation>


Q 11. What is the difference between Flex 2.0 and Flex 3.0
Ans: Enhanced Features like Faster compilation time, SWF file size reduction, Flex/Ajax bridge, Advanced Datagrid, Interactive debugging, Cross-Domain, Versionable, Easy to Use,Security and Code Signing,Failover and Hosting,Cross-Domain RSL, Advanced DatagridDeep Linking, Resource Bundles and Runtime Localization, Flex Component Kit for Flash CS3, Compilation, Language IntelligenceRefactoring, Class Outline,Code Search, Profiler, Module Support, Multiple SDK Support, Skin Importer, Design View Zoom/Pan,Design Mode support for ItemRenderers, Advanced Constraints, CS3 Suite integration, CSS Outline, CSS Design View, Flex 3 SDK Skinning/Style Enhancements

Q 12. How will you call Java method from Flex?
Ans: Using RemoteObject. Explain the process to interviewer

Q 13. What are the config files used for connecting Java and Flex?
Ans:
data-management-config.xml,
messaging-config.xml,
proxy-config.xml,
remoting-config.xml,
services-config.xml

Q 14. What are the channels and their types
Ans: The Channel class is the base message channel class that all channels in the messaging system must extend.
Channels are specific protocol-based conduits for messages sent between MessageAgents and remote destinations. Preconfigured channels are obtained within the framework using the ServerConfig.getChannel() method. You can create a Channel directly using the new operator and add it to a ChannelSet directly
In Flex AMFChannel is used mostly. Action Message Format
Methods
applySettings (),connect(),connectFailed(),connectSuccess(), connectTimeoutHandler()
disconnect(),disconnectFailed(),disconnectSuccess(),flexClientWaitHandler(), getMessageResponder(),internalConnect(),internalDisconnect(),internalSend(),logout()
send(),setCredentials()
Properties
authenticated,channelSets,connected,connectTimeout,endpoint,failoverURIs,protocol,
reconnecting,recordMessageSizes,recordMessageTimes,requestTimeout,uri

Q 15. Give the name of Collection which can be mapped to java and Flex and vice-versa
Ans: java.lang.String String
java.lang.Boolean, boolean Boolean
java.lang.Integer, int int
java.lang.Short, short int
java.lang.Byte, byte[] int
java.lang.Byte[] flash.utils.ByteArray
java.lang.Double, double Number
java.lang.Long, long Number
java.lang.Float, float Number
java.lang.Character, char String
java.lang.Character[], char[] String
java. math.BigInteger String
java.math.BigDecimal String
java.util.Calendar Date
java.util.Date Date
java.util.Collection mx.collections.ArrayCollection(for example, java.util.ArrayList)java.lang.Object[] Arrayjava.util.Map Object (untyped). For example, a java.util.Map[] is converted to an array (of objects).
java.util.Dictionary Object (untyped)
org.w3c.dom.Document XML object
java.lang.Object (other than previously listed types) Typed Object
Objects are serialized by using JavaBean introspection rules and also include public fields. Fields that are static, transient, or nonpublic, as well as bean properties that are nonpublic or static, are excluded.

Q 16. How can you call JavaScript from MXML
Ans: IExternalInterface.call()

Q 17. How can you access a var defined in 1 MXML flex in to another MXML file
Ans: Create 1 object of MXML fiel into another MXML File

Q 18. Is it possible to make httpService Requests synchronous?
Ansvar mytoken:AsyncToken = yourservice.send();
mytoken.addResponder(new ItemResponder(function,errorFunction));
OR
You can create a result handler to your HTTPService.
remoteObjectName.Your method
name.addEventListener("result",HandlerFunction,false,0,true);

Q 19. I need to load an image from flickr into my application. Do I need a crossdomain.xml file on flickr?
Ans: every SWF file you view runs locally on your machine. This means that a SWF would have HTTP access to all machines behind the company firewall. To prevent this, every server other than the one the SWF is loaded from, needs to have a crossdomain.xml file in its root, listing all domains that have access to that particular server

Q 20. What is the difference between httpService and Data Service?
Basically, 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.

Q 21. How do you generate random numbers within a given limit with actionscript?
Ans:var randNum:Number = Math.random()*100;

Q 22. Have you built any components with actionscript? If so explain how you did it?
Ans:
package myComponents{
import mx.controls.Button;
public class MyButton extends Button {
public function MyButton() {
super();
label="Submit";
}}}

Q 23. How do you implement push on a flex applications?
Ans
Messaging systems let separate applications communicate asynchronously as peers by passing packets of data called messages back and forth through a Message Service. A message usually consists of a header and a body. The header contains an identifier and routing information. The body contains application data.

So, you will be building an application that allows you to asynchronously send data through the DS message service to our Flex client application. Here are some key DS messaging terms:

Producer: Producers are applications that create/send messages to the destination.
Consumer: Consumers are applications that receive messages from the destination.
Message Destination: Destinations are the resources used for both publish-subscribe and point-to-point messaging.
Message Channel: The channel is the method for connecting producers and consumers to the destination (using an endpoint).
Message Endpoint: An endpoint is the interface responsible for encoding and decoding data into messages.
Message Adaptor: The adaptor defines the messaging implementation. Options include using the ActionScriptAdapter provided with DS, or an external Java Message Service (JMS) provider.

Q 24. I am going to add images into a tag. How will it resize itself?

Q 25. What is a resource Manager??

Q 26. What are the similarities between java and flex?

Q 27. What is the dynamic keyword used for?

Q 28. How do you implement push with flex data services?

Q 29. What are the methods called when a UI component is intialized?

Q 30. How do you implement drag and drop on components that do not support ondrag and ondrop?

Q 31. Can you write to the file system from flex?
Ans: No, Flex doesnt have File write functions.

Q 32. What is a drag manager?
Ans: Manages the drag-and-drop operations; for example, its doDrag() method starts the drag operation.

Q 33. How do you call javascript from Flex?
Ans:flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;

Q 34. How do you use a repeater?
Ans:
< id="rp" dataprovider="{dp}">
< height="49" width="50" click="Alert.show(String (event.currentTarget.getRepeaterItem()) + ' pressed')" label="{String (rp.currentItem)}">
< /mx:repeater>

Q 35. What are three ways to skin a component in flex?
Ans: Graphical skins: Images that define the appearance of the skin. These images can JPEG, GIF, or PNG files, or they can be symbols embedded in SWF files. Typically you use drawing software such as Adobe® PhotoShop® or Adobe® Illustrator® to create graphical skins.
Programmatic skins: ActionScript or MXML classes that define a skin. To change the appearance of controls that use programmatic skins, you edit an ActionScript or MXML file. You can use a single class to define multiple skins.
Stateful skins: A type of programmatic skin that uses view states, where each view state corresponds to a state of the component.The definition of the view state controls the look of the skin. Since you can have multiple view states in a component, you can use a single component to define multiple skins.

Q 36. How do you use css styles in flex?
Ans: Using external style sheets, Using local style definitions, Using the StyleManager class ,Using the setStyle() and getStyle() methods, Using inline stylesLoading style sheets at run time.

Q 37. What is the difference between sealed class and dynamic classes?
Ans: Sealed Classes: ActionScript 3.0 introduces the concept of sealed classes. A sealed class possesses only the fixed set of properties and methods that were defined at compile time; additional properties and methods cannot be added. This enables stricter compile-time checking, resulting in more robust programs. It also improves memory usage by not requiring an internal hash table for each object instance. Dynamic classes are also possible using the dynamic keyword. All classes in ActionScript 3.0 are sealed by default, but can be declared to be dynamic with the dynamic keyword.
Dynamic classes A dynamic class defines an object that can be altered at run time by adding or changing properties and methods. 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.
dynamic class Protean
{ //Use dynamic keyword before the name of class
}

Q 38. What is e4X and XML?
Ans: E4X means "ECMAScript For XML
Using E4X, we can develop code with XML data faster than was possible with previous programming techniques. E4X provides a set of classes and functionality for working with XML data. ActionScript 3.0 includes the following E4X classes: XML, XMLList, QName, and Namespace.
Here is an example of manipulating data with E4X:
var myXML:XML =
<>
< id="'1'">
<>burger
<>3.95
< /item>
< id="'2'">
<>fries
<>1.45
< /item>
< /order>
trace (myXML.item[0].menuName); // Output: burger
trace (myXML.item.(@id==2).menuName); // Output: fries
trace (myXML.item.(menuName=="burger").price); // Output: 3.95

Q 39. What is state? What is the difference between states and ViewStack?
Ans:View Stack is to handle different MXML file eg TAB control, and states is the transition within single MXML file

Q 40. How does item renderer work? How do I add item renderer at runtime?

Q 41.. What keyword allows you to refer to private variables of a class?

Q 42. How polymorphism works on actionscript?

Q 43.. How do you overload functions in actionscript?

Q 44. What is dynamic keyword used for?
Ans: Those Classes which should be extended and changed are called Dynamic classes

Q 45. What are sealed classes?
Ans: Classes whichyou cant extend. ex String

Q 46. What are runtime shared libraries?

Q 47. What is caringhorm? How do you use it? Have you worked with Cairngorms?

Q 48. What keyword allows you to implement abstraction better?

Q 49. What design patterns have you used? In Actionscript and java?
Ans: Command,Singleton.

Q 50. What's the difference between Java and AS3 getters and setters?
Ans: I have to explicitly call a setter/getter function in Java, while AS3 allows me to Access my setters and getters as though they are variables.
Q 51. Explain the component lifecycle.
Q 52. Tell me about dataServices
Q 53. understanding of MVC
Q 54. They ask what frameworks you aree familiar with When getting developers to help create "standard" application, I'd weight a lot more heavily on the as3 questions. Aside from basic "show me how you'd write X" algorithm questions, you can ask more in depth ones about the workings of the language:
Q 55. Explain how binding works in mxml components.

Q 56. Explain the ChangeWatcher.Wach()
Ans: You can detect when a binding occurs in your application. Flex includes the mx.binding.utils.ChangeWatcher class that you can use to define a watcher for a data binding. Typically, your event watcher invokes an event listener when the binding occurs

Q 57. Why would you want to keep a reference to a ChangeWatcher and call unwatch()?

Q 58. How do you add event listeners in mxml components. Now AS3 components?
Q 59. What does calling preventDefault() on an event do? How is this enforced?
Ans: Prevent defaults helps skipping the default behaviour or any componnent. Like in radio Button when you will click it will get selected, but if you want only the skin to be changed you can use preventDefault()

Q 60. (If applicable) Explain the lifecycle of a Cairngorm action. or PureMVC

Q 61. PureMVC architecture

Q 62. What are some ways to specify styles on components?

Q 63. What is the problem with calling setStyle()
Ans: When you are instantiating an object and setting the styles for the first time, you should try to apply style sheets rather than use the setStyle() method because it is computationally expensive. This method should only be used when you are changing an object's styles during run time
Q 64. Explain the difference between creating an effect and setting the target as opposed to adding an effectListener
Q 65. What do repeater components do?
Q 66. How do you identify a component created in a repeater?

Q 67. What is state? What is the difference between states and ViewStack? Ans: View Stack is to handle different MXML file eg TAB control.And states is the transition within single MXML file ViewStack should be used where there is complete change in the controls used and States should be used when you just want to add or remove afew components based on certain conditions. Login/Registration/Forgot password is the best example for using States as each page will either add or remove to the already existing one.

Q 68. What is the difference between httpService and Data Service?
Ans. The Flex presentation layer communicates with the business layer by using Flex data services, which are objects you insert in a Flex file. Specifically, you can use Flex data services to interact with the following:
* Web services
* HTTP services
* Remote objects
A Flex data service is an object you insert in an MXML file to communicate with the business layer of a multi-tier application. You use data services to send and receive data from web services, HTTP URLs, and remote objects such as server-based Java objects. An HTTP service is nothing more than an HTTP request to a URL. The primary purpose of HTTP services is to retrieve XML data from an external source.

Q 69. Why you don’t Embed all images in your application
Ans: That increases the size of the SWF File

Q 70. What type of images can be loaded
Ans: (PNG, GIF, JPEG, SWF at run time and PNG, GIF, JPEG, SWF, SVG at compile time)

Q 71. Explain ContainerCreationPolicy
Ans: This is used with the containers like Accordian, ViewStack etc. depending upon the ContainerCreationPolicy you have set accordingly the child pages will be loaded.
ALL Immediately create all descendants.
AUTO: Delay creating some or all descendants until they are needed.
NONE: Do not create any children.
QUEUED: Add the container to a creation queue.

Q 72. What are the factory classes
Ans: Factory class The factory class creates an object of the instance class to perform the effect on the target. You create a factory class instance in your application, and configure it with the necessary properties to control the effect, such as the zoom size or effect duration.

Q 73. Explain Metadata
Ans: You insert metadata tags into your MXML and ActionScript files to provide information to the Adobe Flex compiler. Metadata tags do not get compiled into executable code, but provide information to control how portions of your code get compiled.

Q 74. I was asked too many questions on the event bubbling, Like how to capture and event if the component is disabled.
Ans: addEventListner on the parents and enable the component in that handler

Q 75. obj.addEventListener(MouseEvent.CLICK, MouseClickHAndler); in this obj should inherit which class?
Ans: DispachEvent
You can manually dispatch events using a component instance's dispatchEvent() method. All components that extend UIComponent have this method
objectInstance.dispatchEvent(event:Event):Boolean

Q 76.Why we extent Sprite Class in our Graphical Classes?


Q 77.What is Layout Manager and explain the Properties and Methods?
Ans: The LayoutManager is the engine behind Flex's measurement and layout strategy. Layout is performed in three phases; commit, measurement, and layout.
The commit phase begins with a call to validateProperties(), which walks through a list (sorted by nesting level) of objects calling each object's validateProperties()method.

The objects in the list are processed by nesting order, with the most deeply nested object accessed first. This can also be referred to as bottom-up inside-out ordering.

The measurement phase begins with a call to validateSize(), which walks through a list (sorted by nesting level) of objects calling each object's validateSize() method to determine if the object has changed in size.

The layout phase begins with a call to the validateDisplayList() method, which walks through a list (reverse sorted by nesting level) of objects calling each object's validateDisplayList() method to request the object to size and position all components contained within it (i.e. its children).

Property of LayoutManager
usePhasedInstantiation : Boolean
A flag that indicates whether the LayoutManager allows screen updates between phases.

Q 78.How do you call a method in particular ItemRenderer. Also the ItemRenderer is your own Custom Component.
Ans :
<>
< id="comboBox" dataprovider="{statesXMLList}" labelfield="@name" itemrenderer="ComboBoxItemRenderer">
< /mx:Application>
View ComboBoxItemRenderer.mxml
< ?xml version="1.0" encoding="utf-8"?>

< mx="http://www.adobe.com/2006/mxml" stylename="plain">
< text="{data.@name}" onclick="MyOwnMethodThatIWantToCall()">
< /mx:VBox>

Q 79.How can you implement Singleton in Flex Application?
Ans:If you are a Java Programmer dont be mistaken by saying create Private Constructor. We cant create private Constructor in Flex.

Q 80.Give similiarities btw Java and Flex
Ans: Both are object Oriented, Encapsulation, Inheritance, Abstraction and Polymorphism are implemeted in both of the technologies.
*The package like imports
*Availability of Classes in the scripting language
*Capabilities Arrays & ArrayCollections
*On the UI end, similarities to SWING