Code using PreparedStatement.executeUpdate failing in stress test

Hello,
I've just recently learned how to use J-Meter and have been performing tests on my programs. One of which performs the following:
1. Read user data using a simple SELECT password FROM users where userid = 'xxx'
2. When authenticated, runs an immediate update using value binding via PreparedStatement.executeUpdate() which is really just updating the lastlogin column of the same table with the current date.
My application servlet is running on Glassfish and uses a jdbc connection pool defined on it. The problem is that at about 200 concurrent executions per second of the process described above, PreparedStatement.executeUpdate() returns 0 instead of 1 at around 20% of the time. The Glassfish server is on a Sunfire X2100 platform running solaris 10 and has 2 gb ram, while the database on the other end is a Oracle 10G R2 on a PC clone Pentium 4 with 512mb ram also running on Solaris 10.
This failure rate is too high so what can I do to reduce it?
Thanks in advance,
- Owen

Owen_Ilagan wrote:
Hello,
200 per second? That's a pretty decent load. Well, I was told that that was the acceptable load for the same app running on a standard pentium 4 machine I don't see how you can talk about "acceptable load" for a given piece of hardware without taking into consideration what the application is doing. A read-mostly web app will be very different from one that's transaction and/or computation intensive.
so I would like to get better performance from this Sunfire X2100. Unless of course that figure is wrong... I've just recently started learning to scale my java applications and figuring out how to fine-tune the servers my programs would be running on. I think this is a good article:
http://www.javaworld.com/javaworld/jw-06-2006/jw-0619-tuning.html?page=1
I don't know where that setting is on Glassfish so its on default. Is there an optimal setting for it? I run JMeter on a different machine. Good - your clients aren't competing for memory with the server that way.
Again, I dont seem to recall seeing a setting like that on Glassfish. The current pool setting is at Initial size 8, maximimum size of 32. I already tried increasing it to 200+ but there was no noticeable improvement so I set it back to 32. That's sufficient. You don't need 1 connection per user because of the pool. I use 5:1 as a rule of thumb.
Threads in my worker pool? Hmmm, let me just clarify that I'm running a rather simple web servlet application using the 1.5 SDK and its not a full-blown EE application. Doesn't matter. There is one thread per incoming request. If the worker thread pool is exhausted the requests are queued up. There's an optimal setting for that, too.
Well, I dont run into any SQL errors so there is no stack trace to log. Huh? You mean your PreparedStatement can return 0 and not have an exception?
What happens if you try to UPDATE a user record that isn't in the database? Is that possible?
When PreparedStatement.executeUpdate() is called, it returns 0 instead of 1. I did put the call inside a try-catch to handle java.sql.SQLExceptions but its not throwing one.Interesting. See question above.
I hope so.Difficult, but you sound like you're doing a rigorous job.
%

Similar Messages

  • ConnectionBean fail with stress test. please assist.

    I am using the following to get connected to database.
    package com.db;
    import java.util.*;
    import java.io.*;
    import java.sql.*;
    import javax.servlet.http.*;
    public class ConnectionManager implements HttpSessionBindingListener
      private Connection connection;
      private Statement statement;
      private String driver = "";
      private String dbURL = "";
      private String login = "";
      private String password = "";
    static public void main(String[] args)
          ConnectionManager cm = new ConnectionManager();
      } // main
    public ConnectionManager()
           Properties Prop = new Properties();
           try {
              InputStream configStream = getClass().getResourceAsStream("/config/database.properties");
                   Prop.load(configStream);
              configStream.close();
               } catch(IOException e) {
                      System.out.println("Error: Cannot laod configuration file ");
           driver =Prop.getProperty("driver");
           dbURL = Prop.getProperty("dbURL");
            login = Prop.getProperty("login");
            password = Prop.getProperty("password");
    public void setDriver (String sDriver)
       if (sDriver != null)
           driver = sDriver;
    public String getDriver ()
       return driver;
    public void setDbURL (String sDbURL)
        if (sDbURL != null)
         dbURL = sDbURL;
    public String getDbURL()
       return dbURL;
    public void setLogin (String sLogin)
       if (sLogin != null)
          login = sLogin;
    public String getLogin()
       return login;
    public void setPassword (String sPassword)
       if (sPassword != null)
          password = sPassword;
    private String getPassword()
       return password;
    private void getConn ()
       try
          Class.forName(driver);
          connection = DriverManager.getConnection(dbURL,login,password);
          statement=connection.createStatement();
       catch (ClassNotFoundException e)
          System.out.println("ConnectionManager: driver unavailable");
          connection = null;
       catch (SQLException e)
          System.out.println("ConnectionManager: driver not loaded");
          connection = null;
    public Connection getConnection()
       if (connection == null)
          getConn();
       return connection;
    public void commit() throws SQLException
        connection.commit();
    public void rollback() throws SQLException
        connection.rollback();
    public void setAutoCommit(boolean autoCommit)
        throws SQLException
        connection.setAutoCommit(autoCommit );
    public ResultSet executeQuery(String sql) throws SQLException
        if (connection == null || connection.isClosed())
            getConn();
        return statement.executeQuery(sql);
    public int executeUpdate(String sql) throws SQLException
        if (connection == null || connection.isClosed())
            getConn();
        return statement.executeUpdate(sql);
    public void valueBound(HttpSessionBindingEvent event)
        System.err.println("ConnectionBean: in the valueBound method");
        try
          if (connection == null || connection.isClosed())
            connection = DriverManager.getConnection(dbURL,login,password);
            statement = connection.createStatement();
        catch (SQLException e)
          e.printStackTrace();
          connection = null;
    public void valueUnbound(HttpSessionBindingEvent event)
        close();
    public void close()
       try
           if ( connection != null
                || !connection.isClosed())
            connection.close();
       catch (SQLException e)
          e.printStackTrace();
    }This is what I use to test this code:
    <%@ page import="java.sql.*" %>
    <%@ page import="java.text.*" %>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*" %>
    <p>
    Testing DBConnection Bean. <p>
    <%
    String sql="SELECT * FROM BS_PERSON" ;
    com.db.ConnectionManager CM = new com.db.ConnectionManager();
    ResultSet rset = CM.executeQuery(sql);
    while (rset.next()) {
       out.println(rset.getString("PERSON_USERCODE") + "<br>");
    %>When I stress test it, the code perform well for a while and then throw the following on Tomcat:
    ConnectionManager: driver not loaded
    ConnectionManager: driver not loaded
    ConnectionManager: driver not loaded
    Is there anything I could improve?
    For application that has many database read/write, is there any open source connection program that uses connection pooling?
    Thank you.

    Thank you for the prompt response.
    Yes. the code works and the data set gets return when I execute the code. It only fail with stress test after say 150-160 hits.
    I have put in the printStack Trace and got the following:
    ConnectionManager: driver not loaded
    java.sql.SQLException: ORA-00020: maximum number of processes (150) exceeded
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
         at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
         at oracle.jdbc.ttc7.O3log.receive1st(O3log.java:407)
         at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:259)
         at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
         at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
         at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
         at java.sql.DriverManager.getConnection(DriverManager.java:512)
         at java.sql.DriverManager.getConnection(DriverManager.java:171)
         at com.db.ConnectionManager.getConn(ConnectionManager.java:106)
         at com.db.ConnectionManager.executeQuery(ConnectionManager.java:154)
         at org.apache.jsp.dbconnection_jsp._jspService(dbconnection_jsp.java:76)
    Could it be that I didn't specifically close the connection? How could I go about doing it?
    Thank you.

  • Unit Test code using wrong persistence unit

    In the midst of learning Maven, I created a simple application in which I am using JPA (Java Persistence 1.0.2) with EclipseLink implementation (2.0.2).
    Note: This is an Application Managed environment. So I manually control EntityManager's life cycle.
    The persistence.xml file used by the main source code is different from the one that unit test code uses. Main code uses an Oracle DB and the test code uses an in-memory Derby.
    Running unit tests was updating the Oracle DB (!) and I eventually managed to fix that by using two different persistence-units in the XML files.
    However, I don't understand why that fixed the problem. I manually create and shut down the entity managers and they are not running concurrently. I'm pretty sure Maven (or the way I set it up) doesn't mess up the resources (XML files). In fact by looking at Maven's debug output I can see it's using the right XML file for unit tests.
    Could someone enlighten me, please?

    Do you have both persistence.xml files on your classpath? If so, and they contain the same name for their respective persistence units, you should be getting a warning or error since they must have unique names. There is no way to tell which one you want to access otherwise.
    Best Regards,
    Chris

  • Problem clearing backlog when stress test fails

    I have been trying to use a load runner to stress test WLI. I was running up against
    the Customer Management sample and tried 1000 iterations. The app server crashed
    and now I can't restart it. Apparently it has kept the backlog and is still trying
    to process these requests unsuccessfully. Can you tell me how to restore the server
    state?

    Hello, Kay.
    Thanks for your response.
    I know the stogroups created in this database.
    The problem is undoubtely caused by an homogeneous system copy.
    These are our systems: productive = GEW, test = GEC.
    I know stogroup GEWBTI does not exist in the test system, where it only exists GECBTI.
    The problem is that in SE14 I changed the stogroup to GECBTI, but when creating the index it tries to create it in stogroup GEWBTI.
    Help needed please...

  • Stress Test using em console in 11g results in lesser number of instances

    Hi All,
    We are doing Stress/Load testing using em console in SOA Suite 11g. The problem we are encountering is, em fails to create as many instances as it should. Under "Additional Test Options", we check the "Enable Stress Test" checkbox and give different values for following parameters:
    Concurrent Threads     50
    Loops per Thread     20
    Delay in Milliseconds     1000
    But instead of creating 1000 instances of this composite, em console create only 998 and fails to create 2 instances without giving any error in console logs or server logs.
    Similarly, with below setting:
    Concurrent Threads     50
    Loops per Thread     40
    Delay in Milliseconds     1000
    Instead of creating 2000 instances it creates only 1991 and 9 instances fail without any error. Is this a known bug or we are missing something here? Any pointers will be helpful.
    Thanks,
    Akash

    In case you have multiple instances running, whereas any instance has an unique value started as correlation, when the engine receives the messages for the intermediate receive operation it will be routed without problems to the right instance. In this case, it is not a problem if the engine creates a new composite instance for the intermediate messages.
    We have this situation in Production without any problem.
    Anyway should be simple to simulate the same situation in your development environment to make sure it works well in your scenario.
    Regards
    Luis Fernando Heckler

  • Stress test Sharepoint 2013 portal. How and what do You use?

    Hi!
    I'm using example from here http://msdn.microsoft.com/en-us/library/jj710162.aspx
    It creates record in SP task list. I can loop it to create several records. But how can I simulate
    several users?
    Or what in common sense do You use to stress test sharepoint? Any links or better there is a book?
    Best regards,
    Gennady
    Разработчик под SharePoint, http://rockietm.wordpress.com, http://demo.arsenal-it.com

    >>You can use Visual Studio to create performance and stress testing projects.
    Yes I know that I can use VS, it's in the link of my first post.
    >>Check out my articles at:
    Margriet, thank You very much! I see that You analyzed more than a hundred of tools and dived very deep into this question! Thank You for
    the tool, it works for me!
    1) But what You use to monitor server behavior, do You use Resource monitor? By example I can see some network and cpu activity during test, but how can I analyze this data..
    or I'd use some video-capture tools(like 'camtasia studio'), record this system monitor and then analyze?
    2) I understand correctly, that this tool covers "WFE test", mostly IIS, like pages generation; SQL database should be tested by other methods.
    p.s.:Sorry for bad english)
    upd.: added all Your counters, the picture looks impressive :-D
    Best regards,
    Gennady
    Разработчик под SharePoint, http://rockietm.wordpress.com, http://demo.arsenal-it.com

  • SAP performance test, stress test using HP LoadRunner

    Hi experts,
    Our project is going to Go live soon, customer want to ensure about performance of SAP system and require some testing.
    I am preparing HP LoadRunner script and perform a most complex scenario for stress test. But with performance test, we cannot perform because we do not have enough transaction data
    Please advice me some solution for this case
    Thanks & Best Regards,
    Luong Doan

    Hello,
    If you are looking for simulating load using minimalist tools, a crude way to do this would be configuring Ecatt scripts and running them from multiple machines
    But I think it doesn't work for web based transactions.
    Regards,
    Siddhesh

  • SQL connection errors when stress testing mobile service: SQL failure after 3 attempts

    I have created a Mobile Service (node.js), which has been running for a few months with 50-100k api calls per day with no issues.
    The usage of the service will be scaled up soon, and it will receive much higher traffic, so I am running stress tests (on a staging deployment of the same service).
    The api in question queries data from the sql database that is attached to the mobile service, but caches the resulting data in a redis database for 5 minutes, so each call with identical parameters will not access the SQL database, just the redis cache.
    My first test never has any problems:
    Run a single api calls as fast as possible using the program wrk (https://github.com/wg/wrk). This test never has a problem, and I have run it an hour continuously with a sustained rate of 200 req/s and very few timeout errors.
    The second test always causes problems:
    I created a list of 5 different api calls to the same service (same endpoint, but different parameters), and I run those randomly interweaved as fast as possible. I use the program locust (http://locust.io) for this, spawing 10.000 clients at a rate of 500
    per second. For the first few seconds everything goes ok, but then connections start failing massively.
    I get mostly:
    Error: SQL failure after 3 attempts. Error: [Microsoft][SQL Server Native Client 10.0]TCP Provider: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected
    host has failed to respond.
     (SqlState: 08001, Code: 10060)
    And I see this in the http response:
    ConnectionError(ProtocolError('Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known')),)
    The strange thing is that since I am running the same five calls repeatedly, only the very first of each call will actually access the sql database, every subsequent call will just return data directly from redis, and not try to access the sql database at
    all.
    In the azure console for the sql database in question, I see 1860 successful connections and 11 failed connections, which does not explain the massive failure rate I am seeing.

    Thanks for sharing your tips on this forum, as it will be useful for other users, that run into this issue.
    Feedback like this will also help us improve error reporting in the next release, as missing class files in the packaged application is a common issue when developers are moving from the embeded oc4j instance packaged with JDewveloper to standalone instances.
    -Eric

  • ExecuteUpdate fails because of quotes

    Hi,
    I have an application where users can insert and update their profile. Some times, in their profile they put single quotes or/and double quotes and this makes the Statement.executeUpdate fail. Is there any way to make this thing accept the text as it is?
    Thanks

    Use PreparedStatements rather than Statement andthis
    issue will be resolved for you.You could be right, but do you have any rationale for
    why you think this would solve the problem? I mean,
    these are just interfaces right? Thus, this MIGHT
    work for one database driver, but not another. And
    the obvious question is, why would the
    PreparedStatement implementation be differerent in
    that it accepts different text?Dear SoulTech,
    _nasch's answer is correct but I have a feeling from your question that it might not be too helpful to you without a bit more explanation.
    First yes I have rationale for why I know this would solve the problem.
    And it is this. A PreparedStatement handles all the formatting, conversion, escaping and such issues for you. This applies not only to escaping single quotes in text values but the appropriate formatting of dates and other values as well.
    Using PreparedStatements is almost always preferable to using Statements for that functionality. There are often some side benefits involving security and performance but for it's ability to help you write non-db vendor specific code and not have to deal with formatting values alone is enough reason to use it.
    Yes, PreparedStatement is an interface. So is Statement. And Driver. And Result Set. A JDBC driver implements all these interfaces.
    A pointed out by _nasch if a PreparedStatement implementation did not properly escape a value then that driver implementation is buggy.
    The specific difference between Statement and PreparedStatement is that instead of passing the values in your String of SQL you use ? as placeholders instead. Then you bind values to those placeholders (otherwise known as parameters) and that is when the magic of the PreparedStatement happens.
    Here is an example
    Statement s = c.createStatement();
    ResultSet rs = s.executeQuery("SELECT id,firstname,lastname FROM tblPerson WHERE lastname = 'O'Reilly'");
    // the above will blow up because the ' following the O in O'Reilly has not been escaped
    PreparedStatement ps = c.prepareStatement("SELECT id,firstname,lastname FROM tblPerson WHERE lastname =?");
    ps.setString(1,"O'Reilly");
    rs = ps.executeQuery();// this will work because the PreparedStatement has handled the issue for us.I hope this has given you some direction in this matter, but feel free to ask any questions should my reply in some way fail you.
    Have a happy day.

  • Labview Realtime stress test

    Hi,
       I need some help.how to perform Labview Real time application level stress test?is there any tookit available?
    So far I know I can use DSM to check CPU load  and memory usage. Beside from that If I use below screen shot toolkits ,those will give me more on code level and  all are each individual VI trace time.
    Any Idea how to perform stress test for RT application level .
    Thank you.

    Stress testing is inherently application dependent. Basically it consists of looking at what your application can do and doing a lot of it.
    Say for example, your application lets multiple remote users establish a connection and log some data. An example of a stress test would be to see how many simultaneous connections it can handle without failing or degrading it performance to an unacceptable degree.
    What is your realtime application doing?
    Mike...
    Certified Professional Instructor
    Certified LabVIEW Architect
    LabVIEW Champion
    "... after all, He's not a tame lion..."
    Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

  • Exception only occuring during stress test

    We are trying to get ready to release a beta version of the software I'm working on.. so part of getting ready for that was to try set up some stress tests and hit the server with multiple requests for the same page....
    Not sure exactly how many it is taking but we are getting the following exception.
    2005-06-10 13:20:23 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
    java.lang.NumberFormatException: For input string: "200044.E2000444E"
            at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
            at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1207)
            at java.lang.Double.parseDouble(Double.java:220)
            at java.text.DigitList.getDouble(DigitList.java:127)
            at java.text.DecimalFormat.parse(DecimalFormat.java:1070)
            at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1386)
            at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1156)
            at java.text.DateFormat.parse(DateFormat.java:333)
            at com.xxxxx.xxxxx.struts.adapter.BrowseBaseAdapter.formatYyyyMMddToLocaleStr(BrowseBaseAdapter.java:194)I can only assume that something was not thread safe and somehow something is getting confused....
    this is the method that produced the error and the code that it runs.
    I know absolutely nothing about making something thread safe.... can anyone give me good link to refer to or point something out in the below code that might be a no no.
    private static final SimpleDateFormat xxxxxxxxDateFormat =
              new SimpleDateFormat("yyyyMMdd");
         protected String formatYyyyMMddToLocaleStr(
              String  xxxxxxxxDt,
              Locale locale) {
              String result = "";
              if ( xxxxxxxxDt != null &&  xxxxxxxxDt.length() == 8) {
                   try {
                        Date tempDate =  xxxxxxxxDateFormat.parse( xxxxxxxxDt);
                        result = javaDataTypeToString(tempDate, locale);
                   } catch (ParseException ex) {
              return result;
    public String javaDataTypeToString(Object data, Locale locale) {
              String returnType = data.getClass().getName();
              String result = null;
              if (returnType.equals("java.lang.String")) {
                   result = (String) data;
              } else if (returnType.equals("java.lang.Float")) {
                   NumberFormat formatter = NumberFormat.getNumberInstance(locale);
                   formatter.setMaximumFractionDigits(6);
                   formatter.setGroupingUsed(false);
                   result = formatter.format((Float) data);
              } else if (returnType.equals("java.lang.Double")
                        || returnType.equals("java.math.BigDecimal")) {
                   NumberFormat formatter = NumberFormat.getNumberInstance(locale);
                   formatter.setMaximumFractionDigits(13);
                   formatter.setGroupingUsed(false);
                   StringBuffer buffer = new StringBuffer();
                   result = formatter.format(data, buffer, new FieldPosition(0))
                             .toString();
              } else if (returnType.equals("java.lang.Integer")) {
                   Integer inte = (Integer) data;
                   int intVal = inte.intValue();
                   if (intVal != 0)
                        result = String.valueOf(intVal);
                   else
                        result = "";
              } else if (returnType.equals("java.util.Date")) {
                   java.util.Date date = (java.util.Date) data;
                   SimpleDateFormat dateFormatter = getDatePattern(locale);
                   result = dateFormatter.format(date);
              } else if (returnType.equals("com.sungard.stnweb.utility.Time")) {
                   Time time = (Time) data;
                   result = time.asString();
              } else if (returnType.equals("java.lang.Boolean")) {
                   Boolean dataBool = (Boolean) data;
                   if (dataBool.booleanValue())
                        result = "1";
                   else
                        result = "";
              return result;

    From the API on java.text.SimpleDateFormat
    Synchronization
    Date formats are not synchronized. It is recommended to create separate
    format instances for each thread. If multiple threads access a format
    concurrently, it must be synchronized externally. Being static, your date format object will be accessed by multiple threads.
    Solution: Don't make the date format object static.
    I would suggest like this:
    private static final String dfString  ="yyyyMMdd";
    protected String formatYyyyMMddToLocaleStr(String  xxxxxxxxDt, Locale locale) {
      String result = "";
      SimpleDateFormat xxxxxxxxDateFormat = new SimpleDateFormat(dfString );
      if ( xxxxxxxxDt != null &&  xxxxxxxxDt.length() == 8) {
      try {
        Date tempDate =  xxxxxxxxDateFormat.parse( xxxxxxxxDt);
        result = javaDataTypeToString(tempDate, locale);
      catch (ParseException ex) {}
              return result;
    Ok, so it is constructing a DateFormatting object for each method call, but I don't see it as that big a deal. Its not a huge hit. You might get away with making it an instance variable - I don't know how you use the enclosing class. Start with this, and see if it works.
    Cheers,
    evnafets

  • [b]Tutorial:[/b] Simplify Developing OLE Automation Code Using VBA

    INTRODUCTION
    Automating Office applications from Oracle Forms can be a tedious, frustrating, and time-consuming process. Because the OLE2 and CLIENT_OLE2 built-ins do not validate the automation commands that they relay, code that compiles without errors often dies at runtime with a not-so-helpful error code. This tutorial will demonstrate how to simplify the development of automation code using a tool that ships with all Microsoft Office editions -- the Visual Basic for Applications (VBA) IDE.
    The VBA IDE, a core Office component, is a full-fledged development environment featuring code completion, basic syntax highlighting, context-driven help and a runtime debugger. Its Object Browser provides a convenient means of browsing the Word object model, as well as searching by keyword.
    For those who may not interested in following this tutorial in detail, I would like to stress the usefulness of the Object Browser as a tool for inspecting the functions supported by OLE server applications and, perhaps more importantly, valid values for function arguments. Whether/not anyone buys the assertion that starting with VBA prototypes is far more productive than pounding out OLE2 code from the very start, they will find the Object Browser invaluable as a reference -- I rely on it exclusively for this sort of documentation.
    A BRIEF INTRODUCTION TO THE VBA IDE & THE OBJECT BROWSER UTILITY
    Try this:
    1. Open Word
    2. Launch the VBA IDE by pressing <Alt><F11>
    3. Open the Object Browser by pressing <F2>
    The Object Browser allows you to visually navigate Word's class hierarchy. Its user interface is a bit crowded, so controls are unlabeled. Hovering the mouse cursor above a control will display a tooltip explaining that control's purpose. The browser's scope can be narrowed by using the Project/Library combo. Typing a keyword or substring in the Search Text combo and clicking on the Search button will cause all classes/members whose name contains the specified search text to be listed in the Search Results pane. Selecting an item from this list will update the two panes below it, showing the selected class, and its members. Beneath the Classes and Members panes is an untitled pane, gray in color, which displays details for the selected class/member, including hyperlinks to relevant information such as arguments, their types and allowable values. If Visual Basic Help is installed, pressing <F1> will display help on a selected class/member. (This feature can be installed from your Office install CD, if necessary.)
    NOTE: While it is possible to cut-and-paste the code examples that follow, I highly recommend that they be typed in by hand. Doing so will provide a better understanding of how the IDE's code completion behaves. Use code completion most efficiently by not using the mouse or <Enter> key when selecting from completion lists. Instead, just type enough letters to select the desired list element, then continue along as if you had typed the entire element, typing the next operator in your statement. It really is slick!
    HELLO WORLD - VBA-STYLE
    1. Open Word
    2. Launch the VBA IDE by pressing <Alt><F11>
    3. Select Module from the Insert menu.
    4. In the blank area that appears, enter the following code:
      Public Sub HelloWorld()
          Documents.Add
          Selection.TypeText ("Hello, world!")
      End Sub5. Press <F5> to run the code.
    If you switch back to Word by pressing <Alt><F11>, there should appear a newly-created document containing the text Hello, world!.
    A MORE AMBITIOUS EXAMPLE
    In this example, we will launch Word, type some text, and alter its formatting. For the purposes of this tutorial, consider it the process we wish to automate from within Forms.
    1. If Word is running, close it.
    2. Open any Office application except Word, such as Excel, Outlook or PowerPoint
    3. Launch the VBA IDE by pressing <Alt><F11>.
    4. Select References from the Tools menu -- a dialog should pop up.
    5. From within this dialog, locate and select Microsoft Word <version> Object Library, then click OK.
    6. Select Module from the Insert menu.
    7. In the blank area that appears, enter the following code:
    Public Sub LaunchWord()
        Dim app As Word.Application
        Set app = CreateObject("Word.Application")
        app.Visible = True                          '!!! IMPORTANT !!!
        app.Documents.Add
        With app.Selection
            .TypeText "This is paragraph 1."
            .TypeParagraph
            .TypeText "This is paragraph 2."
            .TypeParagraph
            .TypeText "This is paragraph 3."
        End With
        With ActiveDocument
            .Paragraphs(1).Range.Words(3).Bold = True
            .Paragraphs(2).Range.Words(3).Italic = True
            .Paragraphs(3).Range.Words(3).Underline = True
        End With
    End Sub8. Press <F5> to run the code.
    A new Word session should have been launched. Switch to it, to view the results of our handiwork!
    TAILORING VBA CODE INTENDED FOR OLE2 CONVERSION
    Now, things get a bit uglier. The code listed above gives a good idea of how concise VBA code can be, but With blocks and chained object references do not translate readily into OLE2 code. Here's the same process, rewritten in a more OLE2-friendly style. Note the numerous intermediate object references that have been declared.
    Public Sub LaunchWord()
        Dim app As Word.Application
        Dim doc As Word.Document
        Dim docs As Word.Documents
        Dim pars As Word.Paragraphs
        Dim par As Word.Paragraph
        Dim wrds As Word.Words
        Dim sel As Word.Selection
        Dim rng As Word.Range
        Set app = CreateObject("Word.Application")
        app.Visible = True                          '!!! IMPORTANT !!!
        Set doc = app.Documents.Add
        Set sel = app.Selection
        sel.TypeText "This is paragraph 1."
        sel.TypeParagraph
        sel.TypeText "This is paragraph 2."
        sel.TypeParagraph
        sel.TypeText "This is paragraph 3."
        Set pars = doc.Paragraphs
        'select third word of first paragraph and make it bold
        Set par = pars.Item(1)
        Set rng = par.Range
        Set wrds = rng.Words
        Set rng = wrds.Item(3)
        rng.Bold = True
        'select third word of second paragraph and italicize it
        Set par = pars.Item(2)
        Set rng = par.Range
        Set wrds = rng.Words
        Set rng = wrds.Item(3)
        rng.Italic = True
        'select third word of second paragraph and underline it
        Set par = pars.Item(3)
        Set rng = par.Range
        Set wrds = rng.Words
        Set rng = wrds.Item(3)
        rng.Underline = True
    End Sub
    TRANSFORMATION: CONVERTING VBA CODE INTO PL/SQL
    Here is the PL/SQL counterpart to our previous VBA routine. Compare printouts of the two and note their similarities. Notice the need for argument lists -- this causes the code to fluff up quite a bit, and really interferes with readability.
    PROCEDURE LAUNCH_WORD IS
      v_app OLE2.OBJ_TYPE;     -- Application
      v_doc OLE2.OBJ_TYPE;     -- Document
      v_docs OLE2.OBJ_TYPE;    -- Documents collection
      v_pars OLE2.OBJ_TYPE;    -- Paragraphs collection
      v_par OLE2.OBJ_TYPE;     -- Paragraph
      v_wrds OLE2.OBJ_TYPE;    -- Words collection
      v_sel OLE2.OBJ_TYPE;     -- Selection
      v_rng OLE2.OBJ_TYPE;     -- Range
      v_args OLE2.LIST_TYPE;   -- OLE2 argument list
    BEGIN
      /* launch Word and MAKE IT VISIBLE!!! */ 
        v_app := OLE2.CREATE_OBJ('Word.Application');
        OLE2.SET_PROPERTY(v_app, 'Visible', TRUE);
      /* initialize key object references */ 
        v_docs := OLE2.GET_OBJ_PROPERTY(v_app, 'Documents');
        v_doc := OLE2.INVOKE_OBJ(v_docs, 'Add');
        v_sel := OLE2.GET_OBJ_PROPERTY(v_app, 'Selection');
      /* type first paragraph */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 'This is paragraph 1.');
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        OLE2.INVOKE(v_sel, 'TypeParagraph');
      /* type second paragraph */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 'This is paragraph 2.');
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        OLE2.INVOKE(v_sel, 'TypeParagraph');
      /* type third paragraph */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 'This is paragraph 3.');
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
      /* set reference to Paragraphs collection */
        v_pars := OLE2.GET_OBJ_PROPERTY(v_doc, 'Paragraphs');
      /* select third word of first paragraph and make it bold */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 1);
        v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
        v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
        OLE2.SET_PROPERTY(v_rng, 'Bold', TRUE);
      /* select third word of second paragraph and italicize it */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 2);
        v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
        v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
        OLE2.SET_PROPERTY(v_rng, 'Italic', TRUE);
      /* select third word of second paragraph and underline it */
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
        v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, 3);
        v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
        OLE2.SET_PROPERTY(v_rng, 'Underline', TRUE);
    END;
    REFACTORING FOR REUSABILITY AND READABILITY
    While the previous procedure runs without errors, it suffers from poor readability which, in turn, makes it difficult to maintain. Here, we address those issues by moving repetetive low-level operations into separate procedures.
      PROCEDURE LAUNCH_WORD IS
        v_app OLE2.OBJ_TYPE;    -- Application
        v_doc OLE2.OBJ_TYPE;    -- Document
        v_docs OLE2.OBJ_TYPE;   -- Documents collection
        v_sel OLE2.OBJ_TYPE;    -- Selection
        v_args OLE2.LIST_TYPE;  -- OLE2 argument list
      BEGIN
        /* launch Word and MAKE IT VISIBLE!!! */ 
          v_app := OLE2.CREATE_OBJ('Word.Application');
          OLE2.SET_PROPERTY(v_app, 'Visible', TRUE);
        /* create a new Word document */ 
          v_docs := OLE2.GET_OBJ_PROPERTY(v_app, 'Documents');
          v_doc := OLE2.INVOKE_OBJ(v_docs, 'Add');
          v_sel := OLE2.GET_OBJ_PROPERTY(v_app, 'Selection');
        /* add a few paragraphs */
          PRINT_PARAGRAPH(v_sel, 'This is paragraph 1.');
          PRINT_PARAGRAPH(v_sel, 'This is paragraph 2.');
          PRINT_PARAGRAPH(v_sel, 'This is paragraph 3.');
        /* apply formatting */
          APPLY_FORMATTING(v_doc, 1, 3, 'Bold', TRUE);
          APPLY_FORMATTING(v_doc, 2, 3, 'Italic', TRUE);
          APPLY_FORMATTING(v_doc, 3, 3, 'Underline', TRUE);
      END;
      PROCEDURE APPLY_FORMATTING(
        v_doc OLE2.OBJ_TYPE,
        v_paragraph_num NUMBER,
        v_word_num NUMBER,
        v_attribute VARCHAR2,
        v_value BOOLEAN) IS
        v_pars OLE2.OBJ_TYPE;   -- Paragraphs collection
        v_par OLE2.OBJ_TYPE;    -- Paragraph
        v_wrds OLE2.OBJ_TYPE;   -- Words collection
        v_rng OLE2.OBJ_TYPE;    -- Range
        v_args OLE2.LIST_TYPE;  -- OLE2 argument list
      BEGIN
        /* set reference to Paragraphs collection */
          v_pars := OLE2.GET_OBJ_PROPERTY(v_doc, 'Paragraphs');
        /* get specified paragraph */   
          v_args := OLE2.CREATE_ARGLIST;
          OLE2.ADD_ARG(v_args, v_paragraph_num);
          v_par := OLE2.INVOKE_OBJ(v_pars, 'Item', v_args);
          OLE2.DESTROY_ARGLIST(v_args);
        /* get words for specified paragraph */
          v_rng := OLE2.GET_OBJ_PROPERTY(v_par, 'Range');
          v_wrds := OLE2.GET_OBJ_PROPERTY(v_rng, 'Words');
        /* apply formatting to word found at specified index */
          v_args := OLE2.CREATE_ARGLIST;
          OLE2.ADD_ARG(v_args, v_word_num);
          v_rng := OLE2.INVOKE_OBJ(v_wrds, 'Item', v_args);
          OLE2.SET_PROPERTY(v_rng, v_attribute, v_value);
      END;
      PROCEDURE PRINT_PARAGRAPH(v_sel OLE2.OBJ_TYPE, v_text VARCHAR2) IS
        v_args OLE2.LIST_TYPE;
      BEGIN
        v_args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(v_args, v_text);
        OLE2.INVOKE(v_sel, 'TypeText', v_args);
        OLE2.DESTROY_ARGLIST(v_args);
        OLE2.INVOKE(v_sel, 'TypeParagraph');
      END;
    CONCLUSION
    It is my hope that this tutorial, despite it's introductory nature, has demonstrated the value of the VBA IDE, the ease with which automation processes can be prototyped using VBA, the noticeable similarity between VBA automation routines and their Forms PL/SQL counterparts, and the advantages of testing automation processes within the VBA IDE. Please feel free to follow up with any specific questions or concerns you may have.
    Thanks,
    Eric Adamson
    Lansing, Michigan
    FINAL NOTE: These examples use the OLE2 built-in, and will operate correctly when called from forms running in the Form Builder OC4J. Deploying them to an Oracle Application Server will launch Word on the server itself (if available), which is usually not the developer's intent! Automating Word client-side via web forms requires adding WebUtil support. Adapting the code for WebUtil is trivial -- just replace all instances of OLE2 with CLIENT_OLE2. Adapting forms for WebUtil and configuring OLE support into your Oracle Application Server, however, are beyond the scope of this tutorial.
    REVISION HISTORY
    This promises to be something of a 'living document'. I've snuck changes through without comment in the past, but in the future, I'll try to document significant changes here.
    2006-08-21
      * Prefaced boring subject line with text: 'Tutorial:' to clarify purpose
      * Added emphasis on value of Object Browser as a reference

    Thanks James, for your kind words. I do hope this information will help folks out. I honestly believe that tinkering around in the VBA IDE will prove highly gratifying for automation developers. It can be assured that learning to make Word jump through hoops is much more straight-forward in this environment. I'm not one for mottos, but if I were pressed for a cheesy motto, I would say: First, make it work. Then, make it work in Oracle!
    Once the idea has sunk in, that Visual Basic routines for automating Word are exact analogs to their OLE2 counterparts, we can remove keywords like Oracle and PL/SQL from our Google searches on Word automation which, at least in this context, are the proverbial kiss of death. Suddenly we find ourselves liberated by the possibility of steal-, ahem... borrowing ideas from the Visual Basic* community!
    As for links, my link of choice is invariably http://groups.google.com -- if you don't already use it at least ten times a day, you must try it. This is the venerable USENET archive, including the holdings of now-extinct DejaNews. Another possible site of interest is http://word.mvps.org/FAQs/MacrosVBA, which may serve as a good starting point for those who wish to learn how to do fancy tricks with Word using VBA.
    If these links don't prove immediately helpful, please feel free to give specifics on the sort of operations you are interested in automating, and I'll see if I can post an example that addresses it.
    Regards,
    Eric Adamson
    Lansing, Michigan
    PS: I do hope, as people read my posts, with every other acronym being VBA, that they are not mistakenly hearing a call to learn Visual Basic. I say this, not because I believe learning VB would be a Bad Thing, but because I assume that few of us feel we have the time to learn a new programming language. Despite having come to the Oracle camp already knowing VB/VBA, and having acquired a fair bit of experience with automating Office applications as an Access developer, I remain confident that what I am suggesting people attempt does not rise to the level of learning a language. What I am suggesting is that they learn enough of the language to get by.
    *VB vs. VBA
    Just a quick word on this, as readers may wonder why I seem to use these terms interchangeably. Visual Basic (VB) can refer to either a development platform or a programming language. Visual Basic for Applications (VBA) is a language -- more precisely, it is a subset of the Visual Basic language. One purchases VB, usually quite intentionally. VBA is included with Microsoft Office, as is VBA's development environment, the VBA IDE. The key distinction between VB and VBA is that VBA cannot be used to create self-contained executables. Rather, VBA relies on VBA-enabled applications, such as Microsoft Office applications, to serve as a container for VBA code, and to provide a runtime environment for that code. For the purposes of discussing OLE Automation, VB and VBA are quite interchangeable.

  • Error in running Jasper Reports for more than 100 users in stress test

    I have created a web application with Jasper reports. during the stress test, we were able to run the same report simultaneously for 100 concurrent users, after that we get the following error. I hope there is no problem in my code (correct me if i am wrong)
    We use Web Sphere
    The error we get is as follows:
    java.io.FileNotFoundException: /apps/HewittProjects/installedApps/TBIA/workforce_CUR.ear/workforceServer4.16.4.war/reports/timesheet_mgr2.jasper (Too many open files)
               at java.io.FileInputStream.open(Native Method)
               at java.io.FileInputStream.(FileInputStream.java:106)
               at com.wily.introscope.agent.probe.io.ManagedFileInputStream.(ManagedFileInputStream.java:89)
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:85)
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:64)
               at com.workforcesoftware.servlets.ReportServlet2.getCompiledReport(ReportServlet2.java:712)
               at com.workforcesoftware.servlets.ReportServlet2.doPost(ReportServlet2.java:423)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
               at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
               at com.ibm.ws.webcontainer.servlet.ServicingServletState.service(StrictLifecycleServlet.java:333)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
               at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
               at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
               at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
               at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:61)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1009)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:529)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:208)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:134)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:321)
               at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
               at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:120)
               at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:250)
               at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
               at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
               at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:652)
               at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:448)
               at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:937)
    NESTED BY :
    net.sf.jasperreports.engine.JRException: Error loading object from file : /apps/HewittProjects/installedApps/TBIA/workforce_CUR.ear/workforceServer4.16.4.war/reports/timesheet_mgr2.jasper
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92)
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:64)
               at com.workforcesoftware.servlets.ReportServlet2.getCompiledReport(ReportServlet2.java:712)
               at com.workforcesoftware.servlets.ReportServlet2.doPost(ReportServlet2.java:423)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
               at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
               at com.ibm.ws.webcontainer.servlet.ServicingServletState.service(StrictLifecycleServlet.java:333)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
               at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
               at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
               at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
               at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:61)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1009)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:529)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:208)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:134)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:321)
               at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
               at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:120)
               at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:250)
               at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
               at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
               at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:652)
               at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:448)
               at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:937)
    if this really cannot find the file, then how could it run successfully for 100 users?
    Have anyone experienced this problem?
    Thanks for your help.

    ummm seems odd to have 100 users making a report.. that can be the limitation of your application..

  • Error in Webservice Call HTTP error (return code 404, message conn failed)

    Hi
    We wish to call  a standard EP7 webservice through ABAP.
    When we try to create consumer proxy , we get the following error.
    HTTP error (return code 404, message "conn failed")
    Message no. SPRX090
    ==> Display Error Document
    If you want to generate a proxy for an external WSDL document by specifying a URL, check that the proxy settings of the system are correct (transaction SICF - Client - Proxy Settings). If you want to generate a proxy for an XI Repository object, check the connection to the Enterprise Services Builder as follows:
    Check List for Setting Up a Connection to the Service Repository
    1. The address of the Enterprise Services Repository must be known in the SAP system
    Check with report SPROX_CHECK_IFR_ADDRESS
    The address is taken from the following parameters in the exchange profile ('Connections' section):
    com.sap.aii.connect.repository.name: Server (for example,pwdf0436)
    com.sap.aii.connect.repository.httpport: Port (for example, 1080)
    com.sap.aii.connect.repository.contextroot: Root (for example,rep)
    The logon data is also read from the exchange profile ('ApplicationSystem' section):
    com.sap.aii.applicationsystem.serviceuser.name: User
    com.sap.aii.applicationsystem.serviceuser.pwd: Password
    As an alternative to using the exchange profile, you can maintain the RFC destination SAP_PROXY_ESR. If this RFC destination is maintained it will be used by the proxy generation in place of data from the exchange profile to access the Service Repository. In this case, the Exchange Profile will even not be read.
    The RFC destination has to be set up using transaction SM59 and should look like this:
    RFC Destination: SAP_PROXY_ESR
    Connection Type: G (HTTP Connection to External Serv)
    Description1: ESR for Proxy Generation
    Target Host: esr_host
    Service No: 1080
    Path Prefix: rep
    Logon and Security:
    Basic Authentication: active
    User: esr_user
    Password: esr_password
    2. The HTTP Framework of the Web Application Server must function
    Check with report SPROX_CHECK_HTTP_COMMUNICATION
    If necessary, contact your system administrator. Please be aware of the fact, that the HTTP framework is depending on the application server. Thus the result of the report may differ for different application servers.
    3. Proxy generation must interpret the data of the Enterprise Services Repository correctly
    Check with report SPROX_CHECK_IFR_RESPONSE
    you can also login in dev and go to Xn se91
    enter msg id SPRX and msg no 090
    select the message and click on long text..
    you get the same message in a formatted manner..
    How to get rid of this ?
    Regards
    Rajendra

    Hi
    we have given the correct path as we have tested the webserive from
    other technology (.net) by providing the same path.
    regards
    Rajendra

  • Oracle ADF BC stress testing

    Hi All,
    I have an Oracle ADF application which uses SOA and ADF BC in back-end. As per my requirement, I need to do stress test on ADF BC back-end component. As I said, this application is containing SOA and ADF BC calls so I prepared a test JSPX file on top of single AM (ADF's application module integrates all BC components).
    This is first step in which I actually test single AM. There-after I prepared a JMeter script which actually makes HTTP URLs for calling JSPX. Firstly, I prepared this script for 15 concurrent users. Accordingly, I made changes in AM pooling configurations.
    This is working fine but I have a doubt here, which is, I need to prepare seperate JSPX files (for different HTTP URLs) for different AMs (i.e. different ADF BC components). Is there any way through which I just pass some code snippet in existing application which actually test the ADF BC component. If I create JSPX file each time for each AM module, this will take too much time and efforts.
    I am looking for something which should be implemented with existing application. I do not know, how to do that?
    Please suggest me in case you have any alternate solutions.
    Regards,
    Dilip Gupta@Wipro

    Wrong forum.
    Try: JDeveloper and ADF

Maybe you are looking for