Message Facade Pattern !

hi -
In one of the project designs that I was studying, the message facade pattern is used heavily. That is each request is submitted on to a JMS queue to which a MDB is attached. This is quiet in synch with the Message Facade pattern. But here the servlet is made to wait for the response until MDB finishes processing, i.e., the request which is actually synchronous is processed by asynchronous means but finally making it look like synchronous.
So I want to know how far this design is better as compared to traditional Session Facade in the given scenario of
synchronous requests ? I thought Message Facade pattern is useful only when the requests can be asynchronously processed. Isn't it ?
TIA
-Nikhil.

It may be a precise implementation of a facade, but the benefit of asynchronous processing is lost. If the Servlet blocks until a response is received, it is hard to see what is gained by forwarding the request to an MDB. Most likely, the MDB subsequenly calls a stateless session bean. The point is to offload processing to an asynchronous process and continue serving the client immediately. Typically, the client must return to check a queue or utilize a client-side polling mechanism to retrieve the result of the asynchronous process.

Similar Messages

  • Facade Pattern

    Hi everybody,
    We are designing a system where we want to access a Workflow System (Bonita) installed in a remote server. To do that we want to provide a service following the Facade pattern to give access to the API of the Workflow System through either a RMI or Web services (it seems us WS are too slow, for out requirements, any other idea?)
    The classes of the facade pattern would be included in a jar file (as in future will be used by other apps). This jar would be imported by the final web application (so the workflow api would also be imported to the client application).
    We are not fully happy with this design and we would like to hear different ideas and point of views.
    Thanks in advance,
    Antonio

    Those requests are synchronous; in other words, the
    client waits for a response from the server (ie. list
    of tasks or workflow state). Messaging will probably not be appropriate. How do EJBs fit in? That seems like a strange option for this task.
    RMI may be an option. I'm not sure I would choose it myself, though. Another thing to consider is that in 2007, a web service isn't necessarily SOAP-based. My experience is that SOAP based web services are indeed slow and/or problematic. I would not expect that this is something you will want to open up to the world. So the need to have a public WSDL seems pretty low. You could implement a simpler web service with plain XML documents and a shared schema. If you parse the requests with SAX instead of DOM, speed should not be an issue.

  • Using the Model Facade Pattern in a Java EE 5 Web application

    Hi,
    Yutaka and I did a Tech tip
    http://java.sun.com/mailers/techtips/enterprise/2006/TechTips_Nov06.html#2 on using a model facade pattern in Java EE 5 web-only applications recently. We got some questions about it, and these were some of the questions raised...
    Question 1) the first part of the tech tip(it has two articles in it) http://java.sun.com/mailers/techtips/enterprise/2006/TechTips_Nov06.html showed how to access Java Persistence objects directly from a JSF managed bean, is this a good practice?
    Question 2) when to use a facade(as mentioned in the second part of tech tip) ?
    and maybe
    Question 3) why doesn't the platform make this easier and provide the facade for you?
    Briefly, I will take a shot at answering these three questions
    Answer 1) You can access Java persistence directly from your managed beans, but as your application grows and you start to add more JSF managed beans or other web components(servlets, JSP pages etc) that also directly access Java Persistence objects, you will start to see that you are cutting/pasting similiar code to handle the transactions and to handle the Java Persistence EntityManager and other APIs in many places. So for larger applications, it is a good practice to introduce a model facade to centralize code and encapsulate teh details of the domain model management
    Answer 2) IAs mentioned in answer 1, its good to use a model facade when your application starts to grow. For simple cases a spearate model facade class may not be needed and having managed beans do some of the work is a fast way to jumpstart you application development. But a facade can help keep the code clean and easier to maintain as the aplication grows.
    Answer 3) First note that both of the articles in the tech tip were about pure web apps(not using any EJBs) and running on the Java EE5 platform. Yes it would be nice if a facility like this was made available for web-only applications(those not using EJBs). But for web-only applications you will need to use a hand-rolled facade as we outlined in the tech tip. The Java EE platform does provide a way to make implementing a facde easier though, and the solution for that is to use a Session Bean. This solution does require that you use ythe EJB container and have a Session Bean facade to access your Java Persistence objects and manage the transactions. The EJB Session Facade can do a lot of the work for you and you dont have to write code to manage the transactions or manage the EntityManager. This solution was not covered in this tech tip article but is covered in the Java BluePrints Solutions Catalog for Perssitence at
    https://blueprints.dev.java.net/bpcatalog/ee5/persistence/facade.html in the section "Strategy 2: Using a Session Bean Facade" . Maybe we can cover that in a future tech tip.
    Please ask anymore questions about the tech tip topic on this forum and we will try to answer.
    hth,
    Sean

    Hi Sean,
    I'm working on an implementation of the Model Facade pattern where you can possibly have many facades designed as services. Each service extends a basic POJO class which I'm calling CRUDService: its short code is provided below for your convenience.
    The CRUDService class is meant to generalize CRUD operations regardless of the type of the object being used. So the service can be called as follows, for example:
    Job flightAtt = new Job();
    SERVICE.create(flightAtt);
    Runway r = (Runway) SERVICE.read(Runway.class, 2);
    Employee e = (Employee) SERVICE.read(Employee.class, 4);
    SERVICE.update(e);
    SERVICE.delete(r);SERVICE is a Singleton, the only instance of some service class extending CRUDService. Such a class will always include other methods encapsulating named queries, so the client won't need to know anything about the persistence layer.
    Please notice that, in this scenario, DAOs aren't needed anymore as their role is now distributed among CRUDService and its subclasses.
    My questions, then:
    . Do you see any obvious pitfalls in what I've just described?
    . Do you think traditional DAOs should still be used under JPA?
    . It seems to me the Model Facade pattern isn't widely used because such a role can be fulfilled by frameworks like Spring... Would you agree?
    Thanks so much,
    Cristina Belderrain
    Sao Paulo, Brazil
    public class CRUDService {
        protected static final Logger LOGGER = Logger.
            getLogger(Logger.GLOBAL_LOGGER_NAME);
        protected EntityManager em;
        protected EntityTransaction tx;
        private enum TransactionType { CREATE, UPDATE, DELETE };
        protected CRUDService(String persistenceUnit) {
            em = Persistence.createEntityManagerFactory(persistenceUnit).
                createEntityManager();
            tx = em.getTransaction();
        public boolean create(Object obj) {
            return execTransaction(obj, TransactionType.CREATE);
        public Object read(Class type, Object id) {
            return em.find(type, id);
        public boolean update(Object obj) {
            return execTransaction(obj, TransactionType.UPDATE);
        public boolean delete(Object obj) {
            return execTransaction(obj, TransactionType.DELETE);
        private boolean execTransaction(Object obj, TransactionType txType) {
            try {
                tx.begin();
                if (txType.equals(TransactionType.CREATE))
                    em.persist(obj);
                else if (txType.equals(TransactionType.UPDATE))
                    em.merge(obj);
                else if (txType.equals(TransactionType.DELETE))
                    em.remove(obj);
                tx.commit();
            } finally {
                if (tx.isActive()) {
                    LOGGER.severe(txType + " FAILED: ROLLING BACK!");
                    tx.rollback();
                    return false;
                } else {
                    LOGGER.info(txType + " SUCCESSFUL.");
                    return true;
    }

  • Java Program with Adapter / Facade Pattern

    Hey All:
    I'm very new to the Java language and have been given a fairly complicated (to me) program to do for a course I'm taking. The following is the scenario. I'll post code examples I have and any help will be greatly appreciated. Let me apologize ahead of time for all the code involved and say thank you in advance :).
    The program is the follow the following logic:
    Organizations A's Client (Org_A_Client.java) uses Organization A's interface (Org_A_Interface.java) but we want A's Client to also be able to use Organization B's services as well (Org_B_FileAuthorMgr.java, Org_B_FileDateMgr.java, Org_B_FileIOMgr.java).
    Now a portion of this program also involves validating an xml file to it's dtd, extracting information from that source xml file through the use of a XMLTransformation file, and applying the transformation to produce a targetxml file which is then validated against a target DTD. (I've done this portion as I have a much better understanding of XML).
    At this point we have been given the following java classes:
    Org_A_Client.java
    package project4;
    /* This class is the Organization A Client.
    It reads a source xml file as input and it invokes methods defined in the
    Org_A_Doc_Interface Interface on a class that implements that interface */
    import java.io.*;
    import java.util.Scanner;
    public class Org_A_Client {
         // Define a document object of type Org_A_Doc_Interface
         private Org_A_Doc_Interface document;
         // The Org_A_Client constructor
         public Org_A_Client() {
              // Instanciate the document object with a class that implements the
              // Org_A_Doc_Interface
              this.document = new Adapter();
         // The Main Method
         public static void main(String Args[]) {
              // Instanciate a Client Object
              Org_A_Client client = new Org_A_Client();
              // Create a string to store user input
              String inputFile = null;
              System.out.print("Input file name: ");
              // Read the Source xml file name provided as a command line argument
              Scanner scanner = new Scanner(System.in);
              inputFile = scanner.next();
              // Create a string to store user input
              String fileID = null;
              System.out.print("Input file ID: ");
              // Read the Source xml file name provided as a command line argument
              fileID = scanner.next();
              //Convert the String fileID to an integer value
              int intFileID = Integer.parseInt(fileID);
              if (inputFile != null && !inputFile.equals("")) {
                   // Create and empty string to store the source xml file
                   String file = "";
                   try {
                        // Open the file
                        FileInputStream fstream = new FileInputStream(inputFile);
                        // Convert our input stream to a
                        // BufferedReader
                        BufferedReader d = new BufferedReader(new InputStreamReader(
                                  fstream));
                        // Continue to read lines while
                        // there are still some left to read
                        String temp = "";
                        while ((temp = d.readLine()) != null) {
                             // Add file contents to a String
                             file = file + temp;
                        d.close();
                        // The Client Calls the archiveDoc Method on the Org_A_Document
                        // object
                        if (!file.equals("")) {
                             client.document.archiveDoc(file, intFileID);
                   } catch (Exception e) {
                        System.err.println("File input error");
              } else
                   System.out.println("Error: Invalid Input");
    Org_A_Doc_Interface.java
    package project4;
    /* This class is the Standard Organization A Document Interface.
    * It defines various methods that any XML document object
    * in Organization A should understand
    public interface Org_A_Doc_Interface {
         void archiveDoc(String XMLSourceDoc, int fileID);
         String getDoc(int fileID);
         String getDocDate(int fileID);
         void setDocDate(String date, int fileID);
         String[] getDocAuthors(int fileID);
         void setDocAuthor(String authorname, int position, int fileID);
    Org_B_FileAuthorMgr.java
    package project4;
    public class Org_B_FileAuthorMgr {
         // This function returns the list of file authors for the file that matches
         // the given fileID. For the purpose of the assignment we have not
         // provided any implementation
         public String[] getFileAuthors(String fileID) {
              // Since we do not have any implementation, we just return a
              // null String array of size 2
              return new String[2];
         // This function sets the authorname at a given position for the file that
         // matches the given fileID.
         // For the purpose of the assignment we have not provided any
         // implementation
         public void setFileAuthor(String authorname, int position, String fileID) {
    Org_B_FileDateMgr.java
    package project4;
    public class Org_B_FileDateMgr {
         // This function returns the creation date for the file that matches
         // the given fileID. For the puprposes of the assignment we have not
         // provided any implementation but only return a date string.
         String getFileDate(String fileID) {
              return "1st Nov 2007";
         // This function sets the creation datefor the file that
         // matches the given fileID.
         // For the puprposes of the assignment we have not provided any
         // implementation
         void setFileDate(String date, String fileID) {
    Org_B_FileIOMgr.java
    package project4;
    import java.io.*;
    public class Org_B_FileIOMgr {
         // This class variable stores the file location for all files
         private String fileLocation;
         // This function stores the given String of XMLTargetFile at the
         // fileLocation which is set using the setFileLocation method
         boolean storeFile(String XMLTargetFile, String fileID) {
              if (this.fileLocation != null) {
                   FileOutputStream out; // declare a file output object
                   PrintStream p; // declare a print stream object
                   try {
                        // Create a new file output stream
                        // connected to "myfile.txt"
                        out = new FileOutputStream(fileLocation);
                        // Connect print stream to the output stream
                        p = new PrintStream(out);
                        p.println(XMLTargetFile);
                        p.close();
                        System.out.println("MSG from Org_B_FileIOMgr: Target File Successfully Saved with ID " + fileID);
                   } catch (Exception e) {
                        System.err.println("Error writing to file");
                        return false;
                   return true;
              System.out.println("MSG from Org_B_FileIOMgr: Please set the File Location before storing a file");
              return false;
         // This function sets the fileLocation where the file will be stored for
         // archive
         void setFileLocation(String fileLocation) {
              this.fileLocation = fileLocation;
         // This function retreives the file that matches the given fileID and
         // returns its contents as a string
         // Only for the puprposes of the assignment we have not provided any
         // implementation
         String retrieveFile(String fileID) {
              return "This is the retreived file";
    }Also, we've been given the following two classes which I believe are used to help with the xml transformation using SAX (I've done alot of research regarding parsing XML using SAX/DOM so I understand how it works, but I'm really struggling with the integration...)
    FileDetailsProvider.java
    package project4;
    /* This is the FileDetailsProvider Class which implements the Singleton design pattern.
    The class can be used in the following manner:
         // Declare a object of the class type
            FileDetailsProvider fp;
            // Get the single instance of this class by calling the getInstance static method
            fp= FileDetailsProvider.getInstance();
            // Initialize the class with providing it the file name of our configuration XML file
              fp.loadConfigFile("C:\\assignment4\\XMLTransformerConfig.xml");
    import java.io.File;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    public class FileDetailsProvider {
         private InputHandler handler;
         private SAXParserFactory factory;
         private SAXParser saxParser;
         private final static FileDetailsProvider INSTANCE = new FileDetailsProvider();
         // Private constructor suppresses generation of a (public) default
         // constructor
         private FileDetailsProvider() {
              // Create the content handler
              handler = new InputHandler();
              // Use the default (non-validating) parser
              factory = SAXParserFactory.newInstance();
              // Validate the XML as it is parsed by the SAX Parser: only works
              // for dtd's
              factory.setValidating(true);
              try {
                   saxParser = factory.newSAXParser();
              } catch (Throwable t) {
                   t.printStackTrace();
                   System.exit(0);
         // This is the public static method that returns a single instance of the
         // class everytime it is invoked
         public static FileDetailsProvider getInstance() {
              return INSTANCE;
         // After instantiation this method needs to be called to load the XMLTransformer Configuration xml
         // file that includes the xsl file details needed
         // for our assignment
         public void loadConfigFile(String configFile) {
              try {
                   INSTANCE.saxParser.parse(new File(configFile), INSTANCE.handler);
              } catch (Throwable t) {
                   t.printStackTrace();
                   // Exceptions thrown if validation fails or file not found
                   System.out.println();
                   System.out.println("C:\\Documents and Settings\\Jig\\Desktop\\Project 4\\Project4\\Transform.xsl");
                   System.exit(0);
         // This method return the xsl file name
         public String getXslfileName() {
              return handler.getXslfileName();
         // This method returns the xsl file location
         public String getXslfileLocation() {
              return handler.getXslfileLocation();
    InputHandler.java
    package project4;
    /* This class is used by the FileDetailsProvider Class to read the XMLTranformerConfig xml
    * file using a SAX parser which is a event based parser
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.xml.sax.helpers.DefaultHandler;
    public class InputHandler extends DefaultHandler {
         private String xslfileName = "";
         private String xslfileLocation = "";
         int fileName = 0, fileLoc = 0, DTDUrl = 0;
         boolean endOfFile = false;
         public InputHandler() {
         // Start XML Document Event
         public void startDocument() throws SAXException {
              super.startDocument();
         // End XML Document Event
         public void endDocument() throws SAXException {
              super.endDocument();
              // display();
         public void display() {
              System.out.println(xslfileName);
              System.out.println(xslfileLocation);
         public void startElement(String uri, String localName, String qName,
                   Attributes attributes) throws SAXException {
              String eName = localName; // element name
              if ("".equals(eName))
                   eName = qName; // not namespace-aware
              if (eName.equals("File Name:")) {
                   fileName++;
              } else if (eName.equals("File Location:")) {
                   fileLoc++;
         public void endElement(String uri, String localName, String qName)
                   throws SAXException {
              String eName = localName; // element name
              if ("".equals(eName))
                   eName = qName; // not namespace-aware
         public void characters(char ch[], int start, int length)
                   throws SAXException {
              String str = new String(ch, start, length);
              // Getting the Transform File Location
              if (fileLoc == 1 && xslfileLocation.equals("C:\\Documents and Settings\\Jig\\Desktop\\Project 4\\Project4\\")) {
                   xslfileLocation = str;
              // Getting the Transform File Name
              if (fileName == 1 && xslfileName.equals("Transform.xsl")) {
                   xslfileName = str;
         public void processingInstruction(String target, String data)
                   throws SAXException {
         // treat validation errors as fatal
         public void error(SAXParseException e) throws SAXParseException {
              throw e;
         // This method return the xsl file name
         public String getXslfileName() {
              return xslfileName;
         // This method returns the xsl file location
         public String getXslfileLocation() {
              return xslfileLocation;
    }I need to do the following:
    1. Create an adapter class and a facade class that allows Client A through the use of Organization's A interface to to use Organization B's services.
    2. Validate the Source XML against its DTD
    3. Extract information regarding the XSL file from the given XMLTransformerConfig xml file
    4. Apply the XSL Transformation to the source XML file to produce the target XML
    5. Validate the Target XML against its DTD
    Now I'm not asking for a free handout with this program completed as I really want to learn how to do a program like this, but I really don't have ANY prior java experience other than creating basic classes and methods. I don't know how to bring the whole program together in order to make it all work, so any guidance for making this work would be greatly appreciated.
    I've researched over 100 links on the web and found alot of useful information on adapter patterns with java and facade patterns, as well as SAX/DOM examples for parsing xml documents and validation of the DTD, but I can't find anything that ties this all together. Your help will be saving my grade...I hope :). Thanks so much for reading this.

    No one has anything to add for working on this project? I could really use some help, especially for creating the code for the adapter/facade pattern classes.

  • Certification Exam content  clarification - Message mapping patterns

    I was going through the Exam content for  SAP NetWeaver´04 - Exchange Infrastructure & Integration  Dev.Cons.
    Link
    Check out this part -
    " 4. Mapping (++)
    Concepts / Overview
    Test / Debug Environment
    Standard functions
    User-defined Functions
    Message mapping patterns
    Multi-mapping
    ABAP, Java, XSLT mapping overview "+
    What does Message mapping patterns mean?
    I have cert docs but nothing verifies this.
    Thanks for your time,
    Priya.

    Hi,
    Mapping “patterns” are some of the common mapping requirements found in the past which XSLT was used, because we did not think that Message Mapping provided the functionality
    Summarization
    Sequence–Number Generation
    Duplicating Subtrees
    Table / Value Lookups
    Tree–Reversal
    <removed_by_moderator>
    Read the "Rules of Engagement"
    Nilesh
    Edited by: Juan Reyes on Apr 3, 2009 11:15 AM

  • Service Locator and session facade pattern

    What are differences between Service Locator and session facade pattern?
    For me it seems one and the same.
    Please explain me in detail. Expecting kind help.
    Thanks,
    Rahul
    Edited by: rahulb1 on Feb 26, 2008 5:07 PM

    rdoekes wrote:
    The ServiceLocator Pattern is a singleton which hold a map of used DataSources. The idea is that you perform a lookup once and use the cache afterwards. The session facade is just one DataSource lookup.huh? Those J2EE patterns are not really reduced to datasources and the SessionFacade has actually nothing to do with datasources.
    Session Facade
    It has Facade in it and a Facade is usually used to give a simple entrypoint by providing a standartized interface. The same is now with the Session Facade. You have a Session bean that represents a high-level business component that interacts and calls lower-level business components.
    Imagine having client a accessing 5 business objects with the remote calls, which is not an efficient way (network latency) or accessing the SessionFace and the session face is doing all the work through local access.
    Service Locator
    As J2EE components are using JDNI to lookup for ejb interfaces,DataSources, JMS components, connections etc. isntead of writing all the lookup in many code piecess across the project, you write a service locator that gives you a centralized place to handle the lookup's. It's easier to maintain and to control such a setup.
    As you can see there's quite a big difference ;-)
    cya,
    Nail

  • Business Delegate and Session Facade Pattern

    Hi!
    The only way to use the Session Facade Pattern, is if I use EJB for Persistence.
    Is valid to do this?:
    I use Ejb for simple update, insert querys. From my business delegate I call the Session Facade Layer, and from this I invoque Entyties for persistence.
    But if I have complex querys, is correct to make PL SQL Procedures and do the following:
    From my business delegate I call to the Dao layer, and from this via JDBC I call the Procedure.
    Please explain me the best form to do this, having complex querys for reporting and simple querys for inserts/update.
    Is valid to combine the use of CMP (for simple persistence cases), BMP (for complex persistence cases), and JDBC for complex select querys with multiple result rows.
    Thanks!!

    It depends on your design goals. One of the forces driving the use of patterns is the desire to tier an application and abstract the internals of each tier away from the other tiers. One (normal) benefit of this methodology is that the application should become more portable. Now, if you are using PL/SQL, BMP and CMP, you are mixing and matching portable versus proprietary. This is okay. But you should abstract away whether you are using PL/SQL, BMP or CMP from the business layer (or domain model). Ideally, you could completely swap database technologies (say from relational to object) and only have to re-write your integration tier (your DAO's).
    Session facade is simply a glorified Facade pattern. It abstracts the lower-level details of what you are persisting and instead forces you to think in terms of objects. You can use a facade without even remotely touching EJB's. It just so happens that, historically, EJB containers made a mess out of scalability when it came to entity beans. The "session" facade refers to a facade pattern implemented in session beans (that have fewer scalability problems) communicating with the entity beans which do have scalability problems.
    So... to make a long story short, use whatever persistence mechanism you desire. Remember that you should be able to completely switch your persistent store from one type or another and simply re-write your DAO's (or CMP deployment descriptors). Using a facade pattern can help towards this end, but don't make it a straightjacket.
    - Saish
    "My karma ran over your dogma." - Anon

  • Session Facade Pattern without EJB

    All of the session facade pattern examples that I can find are heavily emphasized on EJB. I am planning on implementing a system without EJB's, and am interested in the advantages of using the Session Facade pattern.
    Are there any good examples of using the Facade pattern outside of EJB to build a java server system? If there aren't, is there a better way to implement this type of strategy in a non-EJB system?

    What is the best way to allow the client to
    interact
    with Entity objects, without exposing them. ShouldI
    implement Value objects that are easily serialized
    for transfer across the network?
    If you are not using EJB or a distributed
    architecture, you do not need DTO's or VO's. They
    are an odious construct used to obviate the
    shortcomings of remote method calls over anetwork.
    I strongly disagree.
    They are an obvious and easy model used when the
    following characteristics of a system exist.
    - Different layers.
    - Related data items that are moved throughout the
    layers.
    - Different usage of the related data items by
    different layers.
    Yes, I agree. Note the qualification 'if you are not using a distributed architecture'.
    None of that has anything to do with remote method
    calls over a network. Point of fact the first time I
    used them was in a stand alone application with no
    network traffic except that needed by the database
    driver itself.
    Simply create your domain model objects as POJO's
    s (plain ole Java objects). Persist and retrieve
    your objects via DAO's (data access objects).Your
    service layer (facade) will sit on top of thedomain
    model, encapsulating method calls into logicalunits
    of work.
    And how exactly do you move the customer
    name/customer address from the DAO to the GUI level?I am assuming the dedicated remoting product the OP specifid, Hessian, will handle moving between the tiers, or at least between the controller/view and the business tier.
    - Saish

  • Facade Pattern - Controller Load

    I was just pondering about the predicament of a Controller Servlet in a facade pattern.
    Say, Iam following the conventional MVC architecture with just one controller servlet. Every request that is submitted must go through this servlet only. For example, http://mysite.com/Controller?action=register and http://mysite.com/Controller?action=login
    Even Jakarta Struts this stuff.
    My Question is, in a heavy traffic scenario, how can this single object of the Controller can handle such a heavy load and how can it manage to spawn so many threads and maintain them.
    How does everybody feel about this.
    -Harish.

    Naaaaaaaaah! Ur answer is not convincing. <i>rotnacogeid</i> is correct.
    I am interesting
    in knowing if anyone has come across any kind of
    performance hassles or VM errors because of
    overburdening the single instance of front servlet.It is not a single Instance. The Application Server creates as instances of Servlets & threads as needed. You can this of this as something akin to this.
    HttpServlet instance = (HttpServlet) new Controller() ;
    ...It is possible to overburden this system but you would be overburdening the Application Server not your Servlet. The throughput drops off there are several tools out there to
    http://www.google.co.uk/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=java+servlet+load+testing&spell=1
    Has anyone done any optomization and profiling
    analysis in such scenario.Yes my team use Grinder http://grinder.sourceforge.net/
    Duke$ would be definitely awarded if someone could
    answer my question based on their past experience in
    such a scenario, rather than mere concept.

  • J2EE Facade pattern necessary?

    I've created a CMP entity bean, deployed to a OAS 10g standalone OC4J instance and have a servlet accessing the EJB which make a read-only query against a view.
    The question is this: is it necessary to add a Stateless Session Bean layer to my design if the volume of concurrent user access is expected to be low.

    Not so much a question of if you have a low number of concurrent users but how you want to maintain your application. The session facade is to help reduce coupling between layers. If your application isn't going to grow very much in complexity, and the ejbs aren't called excessively over a network, I'd say don't worry about it. Add it when you need to.
    Of course, if you use ADF, all that stuff is done quite nicely from the start...

  • Factory v/s Facade Design Pattern.

    Folks,
    I was just going thru the Design Patterns (Factory Pattern and the
    Facade Pattern)
    The Factory Pattern :
    The factory completely abstracts the creation and initialization of the product from the client
    This indirection enables the client to focus on its discrete role in the application without concerning itself with the details of how the product is created. Thus, as the product implementation changes over time, the client remains unchanged.
    Client--------------------->Factory----------------->Product
    The Facade Pattern
    Encapsulate the subsystem using a High-Level Interface/provides a
    simplified and uniform interface to a large subsytem of classes.
    The Client communicates with the 'Facade' which has methods to interact
    with subsystems.The Client very rarely accesses objects in the subsystems.
    Subsystems objects usually retain no knowledge of the client.
    Subsystem objects do not normally maintain any reference to Fa�ade.
    Client------------------->Facade------->Subsystems
    My Question is this:
    Arent both these pattern quite similar becos both designs access an Interface
    which inturn invokes the required object of the subsystems?
    Can anyone explain the major difference?

    Perhaps these definitions will clarify things a little for ya...
    Fa�ade
    The Fa�ade pattern simplifies access to a related set of objects by providing one object that all objects outside the set use to communicate
    with the set. This also promotes a weak coupling between the subsystem and its clients. This weak coupling allows you to vary the
    components of the subsystem without affecting the clients.
    Factory
    Centralize the assembly of resources necessary to create an object. This prevents the need to change all classes from changing when a
    Product changes and makes any change needed occur only in the Factory.

  • Session Facade and Business Delegate Pattern

    Hi!
    The only way to use the Session Facade Pattern, is if I use EJB for Persistence.
    Is valid to do this?:
    I use Ejb for simple update, insert querys. From my business delegate I call the Session Facade Layer, and from this I invoque Entyties for persistence.
    But if I have complex querys, is correct to make PL SQL Procedures and do the following:
    From my business delegate I call to the Dao layer, and from this via JDBC I call the Procedure.
    Please explain me the best form to do this, having complex querys for reporting and simple querys for inserts/update.
    Is valid to combine the use of CMP (for simple persistence cases), BMP (for complex persistence cases), and JDBC for complex select querys with multiple result rows.
    Thanks!!

    The session facade is borrowed from the facade pattern, so you could have a facade to almost anything.
    A session facade is usually against other beans...for example if you
    (Not deployed as CMR)
    1. Address bean
    2. Phone Bean
    3. Customer bean
    as entity beans then you can build a session facade such as
    CustomerFacadeBean which will CreateReadUpdateDelete(CRUD) address and phone as well when a customer is CRUD ed.
    In your case you said you have very complex sql's so one way would be
    Business Delegate -> Session Facade -> (Bean Managed) Entity Bean -> DataAccessObject.
    If you think this is a overkill then, write a custom pattern such as DataDelegate
    DataDelegate -> (Bean Managed) Entity Bean -> DataAccessObject.
    In the above scenario you should be quite sure that the system will not evolve into a case mentioned above such as when customer is deleted a phone and address object are also thrown away.
    You said this scenario
    Business Delegate -> DAO..
    I don't think this is a good idea because, a business delegate is a proxy against business objects....and usualy in J2EE business objects are session beans. Entity and DAO objects are data objects not business ones.
    Besides if you do the above scenario you will end up wiring all the transactions, etc etc in your DAO which is not a good idea.
    Although you could use BusinesDelegates against entity beans it will lead to a misnomer.

  • [HOWTO] JSF + Session Facade + Entity Bean (EJB3)

    I'm trying to find a tutorial that shows the advisable way to use JSF with EJB 3 entity beans using the Session Facade pattern (?), but the only tutorials around show very basic usage of JSF (validation, conversions etc.).
    The only thing that is close is this: http://forum.java.sun.com/thread.jspa?threadID=5122284 but still not what I'm looking for.
    Is there any documentation available out there..?
    Message was edited by:
    HakelRausd

    Hi,
    I updated the online doc in blueprints solutions catalog with a small explanation of using JSF with EJB Session Bean at https://blueprints.dev.java.net/bpcatalog/ee5/persistence/ejbfacade.html
    I will add an image soon too. The basic idea for JSF and EJB3 programming model is
    JSF Page --> JSF Managed Bean(backing bean) --> Session Bean --> Java Persistence Object.
    In general, ther would be several JSF pages,and several JSF Managed Beans, and several Java Persistence Objects, but fewer Session Beans. The Session Bean would be expected to be shared and accessed by several managed beans with with Session Bean serving as a facade to the Java Persistence Objects, so there would be few Session Beans.
    The Session Bean would usually be a local Session bean and would only be remote if-and-only-if you wanted RMI-IIOP access. Usually web components like Servlets and JSF Managed Beans use local access to the Session Beans and the access is within the same VM, no remoteness.
    Most of the time, the Session Bean would be a Stateless Session Bean, and would not be a Stateful Session Bean.
    hth,
    Sean

  • Error while calling local session bean from session facade

    Hi Everybody,
    I was to execute example of session facade pattern. All the files compile properly, but when ejbc command is run, i get the following error:
    ERROR: Error from ejbc:
         In EJB *MANAGER, method create() exposes local interface types or local home interface types through the remote home interface of the bean. This is not allowed.
    ERROR: Error from ejbc:
         In EJB *MANAGER, method remove(java.lang.Object) on the home interface does not throw java.rmi.RemoteException. This is a required exception.
         In EJB *MANAGER, method create() on the home interface does not throw java.rmi.RemoteException. This is a required exception.
    ERROR: Error from ejbc: In EJB MANAGER, the home interface be.telenet.sso.servicelayer.ebiz.ManagerHome must extend the javax.ejb.EJBHome interface.
    ERROR: ejbc found errors
    Thanks
    Amit

    If you are looking a local interface up through JNDI, try using the "java:comp/env" namespace. Also, if you post these questions here about EJB, say what vendor you are using because this stuff is pretty new and there will be differences/bugs/etc.

  • BPm collect Message Check

    Hi,
    when i perform a check to standard BPM patterns BpmPatternCollectMessage. I get the following info am i wrong some where do any changes needed to be done.
    Container element stopmessage in step receive terminating message is initialized but not used
    Container element collectmessage in step *receive * message is initialized but not used...
    kindly help

    I did the above scenario as told.
    It is a bpm message dependent scenario. It keeps collecting messages till a particular message is received.
    I more or less used the message dependent pattern given in SAP BASIS.
    The data types are as follows.
    Dt_In
         Name
         OverallID
    Dt_In
         Name
        OverallID
    1 to 1 mapping
    I used the OverallId for correlation. The receive step inside the infinte loop collects the messages with OverallID '1' while the receive step below collects messages with OverallId '2'.
    In the container elements i defined 2 separate message interfaces. One for OverallID '1' and the other for OverallID '2.  The 2 message interfaces have the same Message type. Only values will be different.
    For the parallel fork step i have given end condition OverallID = 2.
    When i execute the scenario the messages are all comingin a queue. The status is wait for event.
    What could be the problem?
    Thanks
    Edited by: pratichi chauhan on Sep 24, 2008 2:46 PM

Maybe you are looking for

  • Error while creating excise invoice cancellation thru J1IS(J1IEX Invoice)

    Dear All, While creating cancel of purchase excise invoice with reference to J1IEX Internal Invoice No. system is throwing a error "Error updating table J_1IEXCHDR" Message no. 8I308 Suggest me asap,. Thanks & Regards, Radhika

  • Messages not displaying content of old conversations

    Earlier today the Messages app hung and I had to force quit it. Now, none of my old conversations are displaying. I have searched around and followed Lincs and Ralph Johns' suggestions in this thread, but nothing has fixed the problem. To recap my at

  • RE: VELO Return blocked stock to unrestricted stock

    Dear experts. I have a situation where once again i would appreciate any help. We are doing returns in VMS for an automotive company. All my code is working and my program creates a return, return delivery, goods reciept and credit memo in vms.  My p

  • Get rid of Password ( i don't want password on login how to remove )

    Hi I am getting a Bit annoyed as I do not have a Password set on login or anything but every time i log on or install application,etc it comes up with the Password needed screen ( which i leave blank and push enter ) I just want to get rid of this Pa

  • ITunes and Aperture import issue - unsolved???

    Trying to import photos from Aperture into iTunes, but iTunes shows incomplete album sizes (should be 50 photos, but instead only shows a count of 23..) and as such does not bring in the whole album on import. I've seen this posted twice here, but bo