What is Moniker?

May 12, 2008 at 10:52 pm (COM, Technical Questions, Two Marks) ()

A moniker is an object (or component ) in Microsoft’s Component Object Model ( COM ) that refers to a specific instance of another object. Monikers originated in Microsoft’s Object Linking and Embedding ( OLE ) technology as a means of linking objects.

A moniker may refer to any single object, or may be a composite made of a number of separate monikers, each of which refers to a particular instantiation of an object.

The moniker is sometimes referred to as an “intelligent name,” because it retains information about how to create, initialize , and bind to a single instance of an object. Once created, the moniker holds this information, as well as information about the object’s states in that specific instantiation.

Since COM is not language-specific, a moniker can be used with any programming language. The programmer gives the instantiation of the object a name. By calling the moniker in code, a programmer can refer to the same object with the same states.

If, for example, a moniker is created for a query , the programmer can reuse the query simply by calling the moniker in the code, because the moniker itself has the necessary information.

Permalink Leave a Comment

EJB – Two Marks Q & A

May 2, 2008 at 9:57 am (EJB, Technical Questions, Two Marks) (, )

What is EJB?

EJB stands for Enterprise Java Bean and is widely-adopted server side component architecture for J2EE. It enables rapid development of mission-critical application that are versatile, reusable and portable across middleware while protecting IT investment and preventing vendor lock-in.

What is the difference between EJB and Java beans?

EJB is a specification for J2EE server, not a product; Java beans may be a graphical component in IDE.

What is EJB role in J2EE?

EJB technology is the core of J2EE. It enables developers to write reusable and portable server-side business logic for the J2EE platform.

What are the key features of the EJB technology?

1. EJB components are server-side components written entirely in the Java programming language

2. EJB components contain business logic only – no system-level programming & services, such as transactions, security, life-cycle, threading, persistence, etc. are automatically managed for the EJB component by the EJB server.

3. EJB architecture is inherently transactional, distributed, portable multi-tier, scalable and secure.

4. EJB components are fully portable across any EJB server and any OS.

5. EJB architecture is wire-protocol neutral–any protocol can be utilized like IIOP,JRMP, HTTP, DCOM,etc.

What are the key benefits of the EJB technology?

1. Rapid application development

2. Broad industry adoption

3. Application portability

4. Protection of IT investment

How many enterprise beans?

There are three kinds of enterprise beans:

1. session beans,

2. entity beans, and

3. Message-driven beans.

What is message-driven bean?

A message-driven bean combines features of a session bean and a Java Message Service (JMS) message listener, allowing a business component to receive JMS. A message-driven bean enables asynchronous clients to access the business logic in the EJB tier.

What are Entity Bean and Session Bean?

Entity Bean is a Java class which implements an Enterprise Bean interface and provides the implementation of the business methods. There are two types: Container Managed Persistence (CMP) and Bean-Managed Persistence (BMP).

Session Bean is used to represent a workflow on behalf of a client. There are two types: Stateless and Stateful. Stateless bean is the simplest bean. It doesn’t maintain any conversational state with clients between method invocations. Stateful bean maintains state between invocations.

What is Session Bean? Explain

A session bean is a non-persistent object that implements some business logic running on the server. One way to think of a session object is as a logical extension of the client program that runs on the server.


Session beans are used to manage the interactions of entity and other session beans,access resources, and generally perform tasks on behalf of the client.


There are two basic kinds of session bean: stateless and stateful.


Stateless session beans are made up of business methods that behave like procedures; they operate only on the arguments passed to them when they are invoked. Stateless beans are called stateless because they are transient; they do not maintain business state between method invocations. Each invocation of a stateless business method is independent from previous invocations. Because stateless session beans are stateless, they are easier for the EJB container to manage, so they tend to process requests faster and use fewer resources.


Stateful session beans encapsulate business logic and state specific to a client. Stateful beans are called “stateful” because they do maintain business state between method invocations, held in memory and not persistent. Unlike stateless session beans, clients do not share stateful beans. When a client creates a stateful bean, that bean instance is dedicated to service only that client. This makes it possible to maintain conversational state, which is business state that can be shared by methods in the same stateful bean.

What is the difference between session and entity beans?

An entity bean represents persistent global data from the database; a session bean represents transient user-specific data that will die when the user disconnects (ends his session). Generally, the session beans implement business methods (e.g. Bank.transferFunds) that call entity beans (e.g. Account.deposit, Account.withdraw)

What are the services provided by container?

Container services are totally depends upon the “vendor implementation”. But more or less most of the vendors suppots the basic services like,

1. LifeCycle Management – It is Automatic.

2. Session Management – it is used by Developer coded callback methods…

3. Transaction Management – it is used by configuring deployment descriptor (DD).

4. Security management – it is used by configuring deployment descriptor (DD).

The other services, if any will be in advanced versions, and depends on Vendor specific.

What is Deployment descriptor?

A deployment descriptor is an XML file packaged with the enterprise beans in an EJB JAR file or an EAR file. It contains metadata describing the contents and structure of the enterprise beans, and runtime transaction and security information for the EJB container.

How many EJB Objects are created for a Bean?

For a Session bean – one EJB object for one bean instance.

For entity bean – it depends , if two users are accessing one row at time then one EJB object is used for both the beans other wise for each bean one EJB object.

What is re-entrant. Is session beans reentrant. Is entity beans reentrant?
If we define the entity bean as being reentrant, multiple clients can connect to the Entity bean & execute methods within the entity bean concurrently. Container takes care of synchronization. If we define the entity bean as non-reentrant and many clients connect to it concurrently to execute a method, exception is thrown

What is EJB container?

An EJB container is a run-time environment that manages one or more enterprise beans. The EJB container manages the life cycles of enterprise bean objects, coordinates distributed transactions, and implements object security. Generally, each EJB container is provided by an EJB server and contains a set of enterprise beans that run on the server.

What is EJB server?

An EJB server is a high-level process or application that provides a run-time environment to support the execution of server applications that use enterprise beans. An EJB server provides a JNDI-accessible naming service, manages and coordinates the allocation of resources to client applications, provides access to system resources, and provides a transaction service. An EJB server could be provided by, for example, a database or application server.

What is the difference between ejbCreate() and ejbPostCreate?

The purpose of ejbPostCreate() is to perform clean-up database operations after SQL INSERTs (which occur when ejbCreate() is called) when working with CMP entity beans. ejbCreate() is called before database INSERT operations. You need to use ejbPostCreate() to define operations, like set a flag, after INSERT completes successfully.

Why does EJB needs two interfaces(Home and Remote Interface)

There is a pure division of roles between the two .
Home Interface is the way to communicate with the container which is responsible for creating , locating and removing beans and Remote Interface is the link to the bean that allows acces to all methods and members.

What is the difference between a Server, a Container, and a Connector?

An EJB server is an application, usually a product such as BEA WebLogic, that provides (or should provide) for concurrent client connections and manages system resources such as threads, processes, memory, database connections, network connections, etc. An EJB container runs inside (or within) an EJB server, and provides deployed EJB beans with transaction and security management, etc. The EJB container insulates an EJB bean from the specifics of an underlying EJB server by providing a simple, standard API between the EJB bean and its container. A Connector provides the ability for any Enterprise Information System (EIS) to plug into any EJB server which supports the Connector architecture. See Sun’s J2EE Connectors for more in-depth information on Connectors.

Why is ejbFindByPrimaryKey mandatory?

An Entity Bean represents persistent data that is stored outside of the EJB Container/Server. The ejbFindByPrimaryKey is a method used to locate and load an Entity Bean into the container, similar to a SELECT statement in SQL. By making this method mandatory, the client programmer can be assured that if they have the primary key of the Entity Bean, then they can retrieve the bean without having to create a new bean each time – which would mean creating duplications of persistent data and break the integrity of EJB.

What is the default transaction attribute for an EJB?

There is no default transaction attribute for an EJB. Section 11.5 of EJB v1.1 spec says that the deployer must specify a value for the transaction attribute for those methods having container managed transaction. In WebLogic, the default transaction attribute for EJB is SUPPORTS.

What is software architecture of EJB?

Session and Entity EJBs consist of 4 and 5 parts respetively:

1. A remote interface (a client interacts with it),

2. A home interface (used for creating objects and for declaring business methods),

3. A bean object (an object, which actually performs business logic and EJB-specific operations).

4. A deployment descriptor (an XML file containing all information required for maintaining the EJB) or a set of deployment descriptors (if you are using some container-specific features).

5. A Primary Key class – is only Entity bean specific.

What is an EJB Context?

EJBContext is an interface that is implemented by the container, and it is also a part of the bean-container contract. Entity beans use a subclass of EJBContext called EntityContext. Session beans use a subclass called SessionContext. These EJBContext objects provide the bean class with information about its container, the client using the bean and the bean itself. They also provide other functions.

Permalink Leave a Comment

EJB – Interview Questions & Answers

May 2, 2008 at 9:54 am (EJB, Technical Questions) (, )

What is session Facade?

Session Facade is a design pattern to access the Entity bean through local interface than accessing directly. It increases the performance over the network. In this case we call session bean which on turn call entity bean.

What technologies are included in J2EE?

The main technologies in J2EE are: Enterprise JavaBeansTM (EJBsTM), JavaServer PagesTM (JSPsTM), Java Servlets, the Java Naming and Directory InterfaceTM (JNDITM), the Java Transaction API (JTA), CORBA, and the JDBCTM data access API.

What is EJB role in J2EE?

EJB technology is the core of J2EE. It enables developers to write reusable and portable server-side business logic for the J2EE platform.

What is Enterprise JavaBeans (EJB) container?

It manages the execution of enterprise beans for J2EE applications.
Enterprise beans and their container run on the J2EE server.

What is the new basic requirement for a CMP entity bean class in 2.0 from that of ejb 1.1?

It must be abstract class. The container extends it and implements methods which are required for managing the relationships

What’s new in the EJB 2.0 specification?

Following are some of the main features supported in EJB 2.0:

1. Integration of EJB with JMS,

2. Message Driven Beans,

3. Implement additional Business methods in Home interface which are not specific for bean instance, EJB QL.

How can I access EJB from ASP?

We can use the Java 2 Platform, Enterprise Edition Client Access Services (J2EETM CAS) COM Bridge 1.0, currently downloadable from Sun

How EJB Invocation happens?

Step 1: Retrieve Home Object reference from Naming Service via JNDI.

step 2: Return Home Object reference to the client.

step 3: Create me a new EJB Object through Home Object interface.

step 4: Create EJB Object from the Ejb Object

step 5: Return EJB Object reference to the client.

step 6: Invoke business method using EJB Object reference.

step 7: Delegate request to Bean (Enterprise Bean).

What is the relationship between local interfaces and container-managed relationships?
Entity beans that have container-managed relationships with other entity beans, must be accessed in the same local scope as those related beans, and therefore typically provide a local client view. In order to be the target of a container-managed relationship, an entity bean with container-managed persistence must provide a local interface.

Are enterprise beans allowed to use Thread.sleep()?

Enterprise beans make use of the services provided by the EJB container, such as life-cycle management. To avoid conflicts with these services, enterprise beans are restricted from performing certain operations: Managing or synchronizing threads

What are Local Interfaces? Describe.

EJB was originally designed around remote invocation using the Java Remote Method Invocation (RMI) mechanism, and later extended to support to standard CORBA transport for these calls using RMI/IIOP. This design allowed for maximum flexibility in developing applications without consideration for the deployment scenario, and was a strong feature in support of a goal of component reuse in J2EE. Many developers are using EJBs locally, that is, some or all of their EJB calls are between beans in a single container. With this feedback in mind, the EJB 2.0 expert group has created a local interface mechanism. The local interface may be defined for a bean during development, to allow streamlined calls to the bean if a caller is in the same container. This does not involve the overhead involved with RMI like marshalling etc. This facility will thus improve the performance of applications in which co-location is planned. Local interfaces also provide the foundation for container-managed relationships among entity beans with container-managed persistence.

What are transaction isolation levels in EJB?

1. Transaction_read_uncommitted- Allows a method to read uncommitted data from a DB(fast but not wise).

2. Transaction_read_committed- Guarantees that the data you are getting has been committed.

3. Transaction_repeatable_read – Guarantees that all reads of the database will be the same during the transaction (good for read and update operations).

4. Transaction_serializable- All the transactions for resource are performed serial.

What is the difference between Container-Managed Persistent (CMP) bean and Bean-Managed Persistent(BMP) ?

Container-managed persistence beans are the simplest for the bean developer to create and the most difficult for the EJB server to support. This is because all the logic for synchronizing the bean’s state with the database is handled automatically by the container. This means that the bean developer doesn’t need to write any data access logic, while the EJB server is supposed to take care of all the persistence needs automatically. With CMP, the container manages the persistence of the entity bean. A CMP bean developer doesn’t need to worry about JDBC code and transactions, because the Container performs database calls and transaction management instead of the programmer. Vendor tools are used to map the entity fields to the database and absolutely no database access code is written in the bean class. All table mapping is specified in the deployment descriptor. Otherwise, a BMP bean developer takes the load of linking an application and a database on his shoulders.


The bean-managed persistence (BMP) enterprise bean manages synchronizing its state with the database as directed by the container. The bean uses a database API to read and write its fields to the database, but the container tells it when to do each synchronization operation and manages the transactions for the bean automatically. Bean-managed persistence gives the bean developer the flexibility to perform persistence operations that are too complicated for the container or to use a data source that is not supported by the container.BMP beans are not 100% database-independent, because they may contain database-specific code, but CMP beans are unable to perform complicated DML (data manipulation language) statements. EJB 2.0 specification introduced some new ways of querying database (by using the EJB QL – query language).

What is bean managed transaction?

If a developer doesn’t want a Container to manage transactions, it’s possible to implement all database operations manually by writing the appropriate JDBC code. This often leads to productivity increase, but it makes an Entity Bean incompatible with some databases and it enlarges the amount of code to be written. All transaction management is explicitly performed by a developer.

What are transaction attributes?

The transaction attribute specifies how the Container must manage transactions for a method when a client invokes the method via the enterprise bean’s home or component interface or when the method is invoked as the result of the arrival of a JMS message. (Sun’s EJB Specification) Below is a list of transactional attributes:

1. NotSupported – transaction context is unspecified.

2. Required – bean’s method invocation is made within a transactional context. If a client is not associated with a transaction, a new transaction is invoked automatically.

3. Supports – if a transactional context exists, a Container acts like the transaction attribute is Required, else – like NotSupported.

4. RequiresNew – a method is invoked in a new transaction context.

5. Mandatory – if a transactional context exists, a Container acts like the transaction attribute is Required, else it throws a javax.ejb.TransactionRequiredException.

6. Never – a method executes only if no transaction context is specified.

What is the difference between Message Driven Beans and Stateless Session beans?

In several ways, the dynamic creation and allocation of message-driven bean instances mimics the behavior of stateless session EJB instances, which exist only for the duration of a particular method call. However, message-driven beans are different from stateless session EJBs (and other types of EJBs) in several significant ways: Message-driven beans process multiple JMS messages asynchronously, rather than processing a serialized sequence of method calls. Message-driven beans have no home or remote interface, and therefore cannot be directly accessed by internal or external clients. Clients interact with message-driven beans only indirectly, by sending a message to a JMS Queue or Topic. Only the container directly interacts with a message-driven bean by creating bean instances and passing JMS messages to those instances as necessary. The Container maintains the entire lifecycle of a message-driven bean; instances cannot be created or removed as a result of client requests or other API calls.


Permalink 1 Comment

What is the difference between find and select methods in EJB?

May 2, 2008 at 9:32 am (EJB, Technical Questions) (, )

A select method can return a persistent field (or a collection thereof) of a related entity bean. A finder method can return only a local or remote interface (or a collection of interfaces).

Because it is not exposed in any of the local or remote interfaces, a select method cannot be invoked by a client. It can be invoked only by the methods implemented within the entity bean class. A select method is usually invoked by either a business or a home method.

A select method is defined in the entity bean class. For bean-managed persistence, a finder method is defined in the entity bean class, but for container-managed persistence it is not.

Permalink Leave a Comment

What are the methods of Entity Bean? Explain

May 2, 2008 at 9:30 am (EJB, Technical Questions) (, )

An entity bean consists of 4 groups of methods:

1. create methods: To create a new instance of a CMP entity bean, and therefore insert data into the database, the create() method on the bean’s home interface must be invoked. They look like this: EntityBeanClass ejbCreateXXX(parameters), where EntityBeanClass is an Entity Bean you are trying to instantiate, ejbCreateXXX(parameters) methods are used for creating Entity Bean instances according to the parameters specified and to some programmer-defined conditions.


A bean’s home interface may declare zero or more create() methods, each of which must have corresponding ejbCreate() and ejbPostCreate() methods in the bean class. These creation methods are linked at run time, so that when a create() method is invoked on the home interface, the container delegates the invocation to the corresponding ejbCreate() and ejbPostCreate() methods on the bean class.


2. finder methods: The methods in the home interface that begin with “find” are called the find methods. These are used to query the EJB server for specific entity beans, based on the name of the method and arguments passed. Unfortunately, there is no standard query language defined for find methods, so each vendor will implement the find method differently. In CMP entity beans, the find methods are not implemented with matching methods in the bean class; containers implement them when the bean is deployed in a vendor specific manner. The deployer will use vendor specific tools to tell the container how a particular find method should behave. Some vendors will use object-relational mapping tools to define the behavior of a find method while others will simply require the deployer to enter the appropriate SQL command.


There are two basic kinds of find methods: single-entity and multi-entity. Single-entity find methods return a remote reference to the one specific entity bean that matches the find request. If no entity beans are found, the method throws an ObjectNotFoundException . Every entity bean must define the single-entity find method with the method name findByPrimaryKey(), which takes the bean’s primary key type as an argument.


The multi-entity find methods return a collection ( Enumeration or Collection type) of entities that match the find request. If no entities are found, the multi-entity find returns an empty collection.


3. remove methods: These methods (you may have up to 2 remove methods, or don’t have them at all) allow the client to physically remove Entity beans by specifying either Handle or a Primary Key for the Entity Bean.


4. home methods:
These methods are designed and implemented by a developer, and EJB specification doesn’t have any requirements for them except the need to throw a RemoteException is each home method

Permalink Leave a Comment

What is EJB architecture(components)?

May 2, 2008 at 9:08 am (EJB, Technical Questions) (, )

Enterprise beans-An enterprise bean is a non-visual component of a distributed, transaction-oriented enterprise application. Enterprise beans are typically deployed in EJB containers and run on EJB servers.


There are three types of enterprise beans: session beans, entity beans, and message-driven beans.

Session beans: Session beans are non-persistent enterprise beans. They can be stateful or stateless. A stateful session bean acts on behalf of a single client and maintains client-specific session information (called conversational state) across multiple method calls and transactions. It exists for the duration of a single client/server session. A stateless session bean, by comparison, does not maintain any conversational state. Stateless session beans are pooled by their container to handle multiple requests from multiple clients.

Entity beans: Entity beans are enterprise beans that contain persistent data and that can be saved in various persistent data stores. Each entity bean carries its own identity. Entity beans that manage their own persistence are called bean-managed persistence (BMP) entity beans. Entity beans that delegate their persistence to their EJB container are called container-managed persistence (CMP) entity beans.

Message-driven beans: Message-driven beans are enterprise beans that receive and process JMS messages. Unlike session or entity beans, message-driven beans have no interfaces. They can be accessed only through messaging and they do not maintain any conversational state. Message-driven beans allow asynchronous communication between the queue and the listener, and provide separation between message processing and business logic.

Permalink Leave a Comment

Client/Server Business Issues – Q & A

April 30, 2008 at 8:10 am (Technical Questions) (, )

Business-Focused Client/Server Architecture

When analyzing a business there are three views of the organization:

A functional model, which reflects organizational responsibilities and the way in which the people who use the system view their work.

A process model, which details the business functions of the organization (e.g. accept orders, make goods, deliver goods, bill customers, and receive money). The functional structure and process model rarely, if ever, agree.

An information model, which details the information that the organization needs to function.

Client/Server Business Application Architectures

Traditional applications architectures have been based on function. Today, to meet the needs of the business application architecture should reflect the complete range of business requirements.

Therefore, client/server computing demands a three layer view of the organization.

  1. The user interface layer, which implements the functional model
  2. The business function layer, which implements the process model
  3. The data layer, which implements the information model

It should be noted that this application architecture does not demand multiple hardware platforms, although such technology can be utilized, if the environment is robust and reliable enough and the business is prepared to pay the additional costs associated with workstation and LAN technology.

Business Drivers

Client/server computing has arisen because of a change in business needs. Businesses today need integrated, flexible, responsive and comprehensive applications to support the complete range of business processes.

Problems with existing systems include:

  • applications were developed to model vertical applications
  • applications were built in isolation
  • applications were implemented as monolithic systems
  • applications were complex
  • the supporting technology was based on a centralized control model

Information technology, which is an enabling factor in systems building, has almost reached the stage where these systems can be designed and created. Unfortunately, most businesses have existing systems based on older technology, which must be incorporated into the new, integrated environment.

The development and implementation of client/server computing is more complex, more difficult and more expensive than traditional, single process applications. The only answer to the question “why build client/server applications?” is “because the business demands the increased benefits.

Business Benefits

There is a perceived need for vendor independence. This includes application development methodologies, programming paradigms, products and architectures.

  • Organization have changed from steep hierarchies to flattened hierarchies
  • Network management is replacing vertical management
  • There is a change to team based management
  • The customer should have a single point of contact for all business with the organization
  • The customer should deal with the same person over multiple contacts.
  • The user will perform as much processing as possible during customer contact time
  • The time required to complete the work will be minimized
  • There is a need for empowerment of staff and audit trail of actions
  • Multi-skilled and multi-function teams need access to multiple applications

What does business expect from IT?

New applications should be aligned with both the user’s view and the business process view. Existing functionally aligned systems are not appropriate

  • Applications need to provide a consistent user interface
  • Application complexity needs to be hidden
  • The user interaction must be flexible
  • Consistent information across all applications
  • A variety of user interface styles to reflect the needs of the work
  • Users should be able to modify business rules without reference to IT staff
  • IT systems will support all activity performed by the user, not just a part
  • An ability to evolve IT systems to reflect changing business requirements
  • It is essential that there be integrity of transactional processes

What is Business Process Reengineering?

Reengineering is the organizational process required to align people, processes and technology with strategies to achieve business integration. It can also be thought of as taking a business in its current state and forming an organizational and operational blueprint to redirect skills, policies, information (data), cultural values, organizational structures, processing and incentives towards targeted improvements.

What sites carry client-server related material?

Object Management Group:

http://www.omg.org/

DCE Questions and Answers:

http://www.osf.org/dce/qna

OSF/DCE FAQ

http://www.osf.org/dce/faq-mauney.html

ftp://ftp.dstc.edu.au/pub/DCE/

Object-Oriented Links at Cetus (Germany)

http://www.rhein-neckar.de/~cetus/software.html

Client/Server Computing Page

http://www.wenet.net/~jtmalone/

Permalink Leave a Comment

Client/Server Technical Issues – Q & A

April 30, 2008 at 8:01 am (Technical Questions) (, )

What are the characteristics of client/server architecture?

The basic characteristics of client/server architectures are:

  1. Combination of a client or front-end portion that interacts with the user, and a server or back-end portion that interacts with the shared resource. The client process contains solution-specific logic and provides the interface between the user and the rest of the application system. The server process acts as a software engine that manages shared resources such as databases, printers, modems, or high powered processors.
  2. The front-end task and back-end task have fundamentally different requirements for computing resources such as processor speeds, memory, disk speeds and capacities, and input/output devices.
  3. The environment is typically heterogeneous and multi-vendor. The hardware platform and operating system of client and server are not usually the same. Client and server processes communicate through a well-defined set of standard application program interfaces (API’s) and RPC’s.
  4. An important characteristic of client-server systems is scalability. They can be scaled horizontally or vertically. Horizontal scaling means adding or removing client workstations with only a slight performance impact. Vertical scaling means migrating to a larger and faster server machine or multiservers.

What are the different types of servers?

The simplest form of servers is disk servers and file servers. With a file server, the client passes requests for files or file records over a network to the file server. This form of data service requires large bandwidth and can slow a network with many users down considerably. Traditional LAN computing allows users to share resources, such as data files and peripheral devices, by moving them from standalone PCUs onto a Networked File Server (NFS).

The more advanced form of servers are database servers, transaction server and application servers (Orfali and Harkey 1992). In database servers, clients passes SQL (Structured Query Language) requests as messages to the server and the results of the query are returned over the network. The code that processes the SQL request and the data resides on the server allowing it to use its own processing power to find the requested data, rather than pass all the records back to a client and let it find its own data as was the case for the file server. In transaction servers, clients invoke remote procedures that reside on servers which also contains an SQL database engine. There are procedural statements on the server to execute a group of SQL statements (transactions) which either all succeed or fail as a unit. The applications based on transaction servers are called On-line Transaction Processing (OLTP) and tend to be mission-critical applications which require 1-3 second response time, 100% of the time and require tight controls over the security and integrity of the database.

The communication overhead in this approach is kept to a minimum as the exchange typically consists of a single request/reply (as opposed to multiple SQL statements in database servers). Application servers are not necessarily database centered but are used to server user needs, such as. Download capabilities from Dow Jones or regulating an electronic mail process. Basing resources on a server allows users to share data, while security and management services, which are also based in the server, ensure data integrity and security.

What are the different client/server processing styles?

Gartner group came out with the five ways of describing the different c/s styles based on how they split the three components of any application: user interface, business or application logic, data management. The five styles are distributed presentation, remote presentation, distributed function, remote data management, and distributed data management.

(Note: This is an arbitrary classification and others may do it differently)

What is distributed or remote presentation?

For people whose roots are embedded in the mainframe IBM world, client-server is essentially distributed or remote presentation. This style maps a workstation Graphical User Interface (GUI) front end onto an existing application’s text-based screen. This is also called Remote, Mapping, Front-ending or HLLAPI (High-Level Language Application Programming Interface). The mode of operation is typically intelligent workstations intercepting and interrogating text-screen (e.g. 3270) data streams sent from a host for display in a windowed environment. This is “frontware” solution, where a GUI front end is added to an IBM/MVS 3270/5250 application and is placed on a workstation. However, most processing remains on the host or server, with the exception of user interface translation logic and possibly validation logic. For example, data from an application program is sent to a 3270 screen program on the mainframe to be displayed. The merged data is sent to the workstation as a 3270 data stream. The workstation interprets the data and converts it to graphical form in a window. (Typically every mainframe screen used by the application has a corresponding window on the workstation and vice versa). When the user enters the data in a GUI window, it is transformed by the frontware application into a corresponding 3270 data format and is sent to the host computer.

What is Remote Data Management?

In remote data management, the entire application resides on the client and the data management is located on a remote server/host. Remote Data Management is relatively easily to program for because there is just one application program. The client communicates with the server using SQL, the server then responds with data that satisfies the query. RDBMS products that offer remote data management provide a layer of software on the client to handle the communication with the DBMS server. This style represents a more traditional LAN database server or file server approach. Workstations support the presentation and function logic and interface with the data server through the data manipulation language. Distributed data management is an extension of remote data management and uses the distributed facilities of the DBMS to access distributed data in a manner transparent to users. This is most relevant for architectures having data spread across several servers and when access to a DBMS on another server is required.

What is distributed function processing?

Here the split occurs in the application functionality, one part going to the client, other to the server. Distributed function applications are the most complex of the three typologies since two separately compiled application programs must be developed. Developers must analyze where each function should reside and what type of dialog must occur between the two programs. The underlying communications facilities may implement either a message-based or remote procedure call (RPC) mechanism for transfer of dialog and data. However, there are many variants of this typology. One variant of the distributed function style is where data management and application function occur at both the client and server.

In this instance, data management at the client would include referential, read-only data. Data frequently updated or accessed by many users would reside on the server.

What is IBM’s System Application Architecture?

SAA is a collection of selected software interfaces, conventions, and protocols that are used as a framework for developing consistent, integrated applications across the major IBM computing environments.

Four major components of this architecture are:

  1. Common User Access (CUA) defines conventions for GUI look and feel.
  2. Common Programming Interface (CPI) provides languages, tools, and APIs that give applications greater portability and more consistent user interfaces across multiple platforms.
  3. Common Communication Support (CCS) supports existing communications standards, such as LU 6.2.
  4. Common Applications, written by IBM, will serve as demonstrations of SAA concepts and make it easy for users to migrate between systems.

What is Apple’s VITAL architecture?

VITAL provides a way of building information systems constructed from generalized modules that can be reused and shared. It specifies how to construct and provide interfaces for these modules. A cornerstone of Apple’s client/server architecture is Data Access Language (DAL). DAL consists of software components for the client and the server (Macintosh System 7 includes the client component, DOS and Windows clients are sold separately). DAL sits between the client and server components.

This approach allows varied clients to communicate with many different servers. With DAL, a change in the DBMS does not affect the front-end; it simply requires the appropriate DAL link.

What is Sun’s Open Network Computing Architecture?

Open Network Computing (ONC) is the Sun architecture, with third party alliances providing the missing pieces. Sun’s RPC is licensed by more than 300 companies, including DEC, IBM, and Apple Computer. It is a lean, efficient RPC that is particularly effective for installations not requiring WAN support. Transport Independent Remote Procedure Calls (TI-RPC) were co-developed by Sun and AT&T. TI-RPC runs independent of the underlying network transport, allowing applications to run unmodified over multiple transport protocols including NetWare, PCNFS, AIX/6000, Solaris, UNIX/SVR4, and AIX/ESA. NetWise developed the TI-RPC Application Toolkit source code generation technology.

What is Digital’s Network Application System (NAS) architecture?

NAS is a software suite that enables applications to be integrated across a distributed network of multivendor systems: NAS services are divided into four main groups:

  • Application Access Services which support user interface (forms based, graphical or character terminal based)
  • Communication and Central services which support communications using electronic mail and EDI
  • Information and resource sharing, which supports database access and compound documents (collection of images, graphics and conventional text)
  • System Access services which provides a standard operating system interface.

What is OSF-DCE?

DCE is the Distributed Computing Environment, from the Open Software Foundation. (It is called “the DCE” by sticklers for grammatical consistency.)

DCE consists of multiple components which have been integrated to work closely together. They are the Remote Procedure Call (RPC), the Cell and Global Directory Services (CDS and GDS), the Security Service, DCE Threads, Distributed Time Service (DTS), and Distributed File Service (DFS). The Threads, RPC, CDS, Security, and DTS components are commonly referred to as the “secure core” and are the required components of any DCE installation. DFS is an optional component.

DCE is called “middleware” or “enabling technology.” It is not intended to exist alone, but instead should be integrated or bundled into a vendor’s operating system offering. DCE’s security and distributed file system, for example, can completely replace their current, non-network, analogs.

What are Distributed Object Management Systems (DOMS)?

DOMS provide a way of pulling diverse components together and managing their communications. They are aimed at addressing the following:

  • A single interface to manage the complexities of a heterogeneous environment
  • A uniform framework, based on standards and extensibility, to build, integrate, and deploy open distributed-computing applications
  • A method for creating location independence for client applications.

What is CORBA?

CORBA stands for the Common Object Request Broker Architecture. It is a set of standard mechanisms for naming, locating, and defining objects in a distributed computing environment.

(For technical details, peruse the Object Management Group web site at http://www.omg.org/)

What is DAE?

Distributed Application Environment is designed to allow businesses to use IBM’s RISC System/6000 and PS/2 computers in a client/server network (or standalone) for their business applications.

DAE consists

  • MESSAGING services;
  • DATABASE services ;
  • PRESENTATION services;
  • DEVICE services to capture data and to control a broad category of controllers, devices, equipment and sensors.

Permalink Leave a Comment

Client/Server – Technical Q & A

April 30, 2008 at 7:47 am (Technical Questions) (, )

What is Client-server computing?

The short answer:

Client/server is a computational architecture that involves client processes requesting service from server processes.

The long answer:

Client/server computing is the logical extension of modular programming. Modular programming has as its fundamental assumption that separation of a large piece of software into its constituent parts (“modules”) creates the possibility for easier development and better maintainability.

Client/server computing takes this a step farther by recognizing that those modules need not all be executed within the same memory space. With this architecture, the calling module becomes the “client” (that which requests a service), and the called module becomes the “server” (that which provides the service).

The logical extension of this is to have clients and servers running on the appropriate hardware and software platforms for their functions. For example, database management system servers running on platforms specially designed and configured to perform queries, or file servers running on platforms with special elements for managing files.

It is this latter perspective that has created the widely-believed myth that client/server has something to do with PCs or UNIX machines.

What is a Client process?

The client is a process (program) that sends a message to a server process (program), requesting that the server perform a task (service).

Client programs usually manage the user-interface portion of the application, validate data entered by the user, dispatch requests to server programs, and sometimes execute business logic. The client-based process is the front- end of the application that the user sees and interacts with. The client process contains solution-specific logic and provides the interface between the user and the rest of the application system. The client process also manages the local resources that the user interacts with such as the monitor, keyboard, workstation CPU and peripherals. One of the key elements of a client workstation is the graphical user interface (GUI). Normally a part of operating system i.e. the window manager detects user actions, manages the windows on the display and displays the data in the windows.

What is a Server process?

A server process (program) fulfills the client request by performing the task requested. Server programs generally receive requests from client programs, execute database retrieval and updates, manage data integrity and dispatch responses to client requests. Sometimes server programs execute common or complex business logic. The server-based process “may” run on another machine on the network. This server could be the host operating system or network file server; the server is then provided both file system services and application services. Or in some cases, another desktop machine provides the application services. The server process acts as a software engine that manages shared resources such as databases, printers, communication links, or high powered-processors. The server process performs the back-end tasks that are common to similar applications.

What is Two-Tier Architecture?

Two-tier architecture is where a client talks directly to a server, with no intervening server. It is typically used in small environments (less than 50 users).

A common error in client/server development is to prototype and application in a small, two-tier environment, and then scale up by simply adding more users to the server. This approach will usually result in an ineffective system, as the server becomes overwhelmed. To properly scale to hundreds or thousands of users, it is usually necessary to move to three-tier architecture.

What is Three-Tier Architecture?

Three-tier architecture introduces a server (or an “agent”) between the client and the server. The role of the agent is many fold. It can provide translation services (as in adapting a legacy application on a

Mainframe to a client/server environment), metering services (as in acting as a transaction monitor to limit the number of simultaneous requests to a given server), or intelligent agent services (as in mapping a request to a number of different servers, collating the results, and returning a single response to the client.

What is Middleware?

Connectivity allows applications to transparently communicate with other programs or processes, regardless of their location. The key element of connectivity is the network operating system (NOS). NOS provide services such as routing, distribution, messaging, file and print, and network management services. NOS rely on communication protocols to provide specific services. The protocols are divided into three groups: media, transport and client-server protocols. Media protocols determine the type of physical connections used on a network (some examples of media protocols are Ethernet, Token Ring, and Fiber Distributed Data Interface (FDDI), coaxial and twisted-pair). A transport protocol provides the mechanism to move packets of data from client to server (some examples of transport protocols are Novell’s IPX/SPX, Apple’s AppleTalk, Transmission Control Protocol/ Internet Protocol (TCP/IP), Open Systems Interconnection (OSI) and Government Open Systems Interconnection Profile (GOSIP)). Once the physical connection has been established and transport protocols chosen, a client-server protocol is required before the user can access the network services.

A client-server protocol dictates the manner in which clients request information and services from a server and also how the server replies to that request (some examples of client-server protocols are NetBIOS, RPC, Advanced Program-to-Program Communication (APPC), Named Pipes, Sockets, Transport Level Interface (TLI) and Sequenced Packet Exchange (SPX)).

What is Cooperative Processing?

Cooperative processing is computing which requires two or more distinct processors to complete a single transaction. Cooperative processing is related to both distributed and client/server processing. It is a form of distributed computing where two or more distinct processes are required to complete a single business transaction. Usually, these programs interact and execute concurrently on different processors. Cooperative processing can also be considered to be a style of client/server processing if communication between processors is performed through a message passing architecture.

What is Distributed Processing?

It is the distribution of applications and business logic across multiple processing platforms. Distributed processing implies that processing will occur on more than one processor in order for a transaction to be completed. In other words, processing is distributed across two or more machines and the processes are most likely not running at the same time, i.e. each process performs part of an application in a sequence. Often the data used in a distributed processing environment is also distributed across platforms.

What is an “Intranet”?

The explosion of the World Wide Web is due to the world-wide acceptance of a common transport (TCP/IP), server standard (HTTP), and markup language (HTML). Many corporations have discovered that these same technologies can be used for internal client/server applications with the same ease that they are used on the Internet. Thus was born the concept of the “Intranet”: the use of Internet technologies for implementing internal client/server applications.

One key advantage of Web-based intranets is that the problem of managing code on the client is greatly reduced. Assuming a standard browser on the desktop, all changes to user interface and functionality can be done by changing code on the HTTP server. Compare this with the cost of updating client code on 2,000 desktops.

A second advantage is that if the corporation is already using the Internet, no additional code needs to be licensed or installed on client desktops. To the user, the internal and external information servers appear integrated.

A rapidly-disappearing disadvantage is that there is limited ability to provide custom coding on the client. In the early days of the Web, there were limited ways of interacting with the client. The Web was essentially “read-only”. With the release of code tools such as Java and JavaScript, this limitation is no longer a major issue.

Permalink Leave a Comment

CORBA Language Mappings – Questions and Answers

April 28, 2008 at 9:11 am (CORBA, Technical Questions) (, )

WHAT IS A LANGUAGE MAPPING?

CORBA IDL is used to describe application and system interfaces in a manner that is independent of programming language and computer platform. A language mapping is a standard to convert the IDL to a particular programming language, like C, C++ or Java.

WHAT ARE THE CURRENT LANGUAGE MAPPINGS FOR CORBA?

The OMG has standardized the following language mappings for IDL:

  1. C
  2. C++
  3. Smalltalk
  4. Java
  5. Ada
  6. Cobol
  7. COM-based language bridge, e.g., Visual Basic

There is also a standardized reverse mapping from Java to IDL.

There are other language mappings that are available from various vendors:

  1. Tcl
  2. PL/1
  3. LISP
  4. Python. Information can be found at Python language mapping
  5. Perl

Permalink Leave a Comment

Next page »