Callback vs inline methods

Hi,
I am having trouble understanding the differences between callback and inline methods. For example when dealing with filters, the destroy(); method is always container callback method, but the doFilter(); can be both. Now there might be other examples outside the J2EE framework, I am not sure.
Is this up to the container to decide which method is callback or inline, or does the developer can specify that? - Not sure if this is a valid question
I would be grateful if someone could share an explanation together with a straightforward example (from J2SE or J2EE or anywhere else)
Thank you in advance

Callback vs. inline isn't that formally specified.
Even callbacks are called "inline", just notinline
by your code.
A callback method is simply a method that someother
piece calls on your object when some task is doneor
some event occurs.Thanks jverd. So a method is "callback" when a third
party calls it on my object? (could be the container
then) Is it possible perhaps to be a bit more
specific? Thanks again.Not necessarily third party. It could be some other piece of your code, or some part of the core API. It's just not typically called directly by the module that its part of, or by clients of that module.
As an example, all the event handling methods in ActionListeners are callbacks. You create the class and impelement the method, but you don't directly call it. You hand the class to Swing, and it calls your listeners' methods when something happens.

Similar Messages

  • About inline method

    Hello,
    My program must be written with high efficiency because it will deal with large amount of data. There is a method which will be called millions of times. Therefore I want this method to be a inline method. However I searched on internet and found user could not control the inline and it was optimized by JIT runtime. Is there any alternatives? Thanks.

    bert_pu wrote:
    Is there any alternatives?Ordered from highest to lowest.
    1. Adjust the requirements. Most impact on performance.
    2. Create the appropriate achitecture.
    3. Create the appropriate design.
    4. Write the code well and then profile it. This will have the least impact.
    If the following is true, for step 4.
    1. The method is in fact having a significant impact on the application (measured, not guessed.)
    2. The method is called millions of times.
    Then the best way to improve performance is to create a design that means that it will not be necessary to call it millions of times. Making the method faster will have FAR less impact on performance versus that.

  • SAX callback functions as methods on a C++ class?

    The SAX callback methods e.g.
    sword startDocument(void *ctx);
    sword endDocument(void *ctx); etc
    Can these be invoked correctly if they were to be added as public or private methods on a C++ class?
    Currently they are being used as global methods at .cpp level.
    eg sword MyClass::startDocument(void *ctx);
    If so how would this be invoked?
    null

    I think you'd have to make the callbacks static member functions of a class if you wanted them to be called from the SAX interface.
    ex:
    class myclass {
    public:
    static sword startDocument(void *ctx);
    xmlsaxcb saxcb;
    saxcb.startDocument = myclass::startDocument;
    null

  • Does hotspot inline methods ?

    hotspot (in earlier versions only hotspot server) avoids dynamic binding for virtual method calls as long as there is no subclass has been loaded with overriding methods. But does it inline the method calls wherever possible at runtime?
    Lets say, we have a bean Foo with a getName method.
    class Foo {
    private String name;
    public String getName() {
    return name;
    Now as long as there is no subclass of Foo have been loaded hotspot will not use dynamic binding. But when a class does something like
    Foo f = new Foo(); //watch that both the type and runtime type is Foo
    f.getName();
    Will hotspot inline the method call?
    Thanks.

    My understanding is that Hotspot may inline a method. I think that there is a threshold as well as other factors, such as being final, private, etc...... See:
    http://developer.java.sun.com/developer/technicalArticles/Networking/HotSpot/inlining.html
    "Inlining is based on a form of global analysis. Dynamic
    loading significantly complicates inlining, because it
    changes the global relationships in a program. A new
    class may contain new methods that need to be inlined in
    the appropriate places. So the Java HotSpot performance
    engine must be able to dynamically deoptimize (and then
    reoptimize if necessary) previously optimized hot spots,
    even during the execution of the code for the hot spot.
    Without this capability, general inlining cannot be safely
    performed on Java technology-based programs."
    from: http://java.sun.com/products/hotspot/whitepaper.html
    BTW, these were the first two hits when I searched for 'inlining with hotspot' up in the top right corner. This is slightly different, but may be of interest:
    http://forum.java.sun.com/thread.jsp?forum=4&thread=260074
    hth,
    m

  • Inlining methods - is it possible?

    First of all, I know that the question proposed on the message subject was asked a thousand times already. The answers, however, always go along the lines of "don't compromise the design for optimization" or "don't worry, let the JVM care about it" and end up evading the main point. In order to avoid sending the thread down that path I will start with a real use case:
    public class Particle {
         private double[] position; // x, y and z coordinates
         private double[] force; // x, y and z components     
         //etc.
         public double getPositionComponent(int index) {
              // returns x, y or z depending on index
              return position[index];
         public void addToForceComponent(double value, int index) {
              force[index] = force[index] + value;
    }getPositionComponent and addToForceComponent are examples of very simple getters and setters which might have to be called many, many, times in a method which simulates dynamics for a large number of Particles. Since the methods themselves are so simple, inlining them should have a significant performance effect in terms of method call overhead minimization - that is, assuming the programmer can have any influence on whether they will be inlined or not... so, the questions:
    1. What can a programmer do to make it likely that simple setters and getters like these get inlined? I'm not just thinking of "magic bullet" keywords, but also in terms of the actual code inside the method (so as to influence whatever decisions the JVM will take).
    2. In particular, will making a method final or private have any effect on inline? Please assume that there is no interest in changing how position or force data is stored or accessed in any of the subclasses of Particle, and so whether making the methods final will compromise the design is not an issue.
    3. Also in particular, does the fact that the setters and getters in this example have to access values inside an array make an inlining less likely?

    Maybe you'll enjoy knowing what happened when I resumed my attempts of pin-pointing performance bottlenecks. I tried to modify the getters and setters of the position data to avoid array access, with no effect on performance. Then I tried to refactor arrays in several parts of the code in order to minimize multi-dimensional array lookups. Again, no effect, or even noticeable slowdowns in some cases (it seems the state of the art JVM is really good in optimizing array reads). Slightly dismayed, I went about re-reading the methods involved with the "core" quadruple loop of the program to see if something else could be done. In one of them, called from the innermost loop, I found this operation:
    for (int i = 0; i < 3; i++) {
         //etc.
         r[i] = r[i] - box[i] * Math.round(r[i] / box);
    That statement is a mindless, nearly direct port of this Fortran (yes, Fortran) code snippet: rxab= rxab- box*ANINT(rxab/box)
    ryab= ryab- box*ANINT(ryab/box)
    rzab= rzab- box*ANINT(rzab/box)
    I decided to do some extra hand-coding and get rid of the Math.round call just to see what would happen. I replaced it with this:     double boxRatio = (r[i] / box[i]);
         int truncRatio = (int)boxRatio;
         if (boxRatio - truncRatio > 0.5)
              r[i] = r[i] - box[i] * (truncRatio + 1);
         else if (boxRatio - truncRatio < -0.5)
              r[i] = r[i] - box[i] * (truncRatio - 1);
         else
              r[i] = r[i] - box[i] * truncRatio;
    Guess what happened?
    A *factor of two* speed increase for the program as a whole. Now my program is within 30% of the performance of the reference Fortran 77 implementation. This further illustrates what Brian Goetz said in aforementioned "write dumb code" article:
    In 2003, you said, "Developers love to optimize code and with good reason. It is so satisfying and fun. But knowing when to optimize is far more >important. Unfortunately, developers generally have horrible intuition about where the performance problems in an application will actually be." Do you >still believe this?
    It's truer today than it was four years ago, and more true for Java developers than it was for C. Most performance tuning reminds me of the old joke >about the guy who's looking for his keys in the kitchen even though he lost them in the street, because the light's better in the kitchen.
    baftos wrote:Do you ever contemplate moving from a 3-dimensional space to a n-dimensional one, where n > 3?
    If not, I would myself get rid of the arrays, not for performance reasons, but because it would become more readable. I like:
    Math.sqrt(x*x + y*y + z*z)a lot more than:
    Math.sqrt(dimension[0]*dimension[0] + dimension[1]*dimension[1] + dimension[2]*dimension[2])or a loop over the dimension array.
    Maybe I should do that for parts of the implementation. However, most of the time I am doing vector operations on things such as force[] or position[], and I feel more often than not they map more naturally to an array implementation (otherwise I would have to refer to x, y and z explicitly every time I need to do, say, vector addition, and IMO that's a bigger nuisance than the x^2 + y^2 situation).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Does final method works like a inline function???

    Hi,
    in c and c++ we have macro and inline functions.
    In java u can not override final methods but My query is
    Does in java final methods wroks like inline methods ?
    Inline means the method call is replaced by method body at compile time so logically it improves the performance.
    I would like to know if final method works like an inkine method up to what extend it really improves the performance.
    Thanks in advance

    It depends.
    In Java it's mostly the VM (the JIT compiler, to be more exact) that handles the optimization. It may or may not inline methods, depending on which gives better performance.

  • App crash when using JAVA callbacks from native threads in solaris

    Hi all,
    Sorry for putting the thread here. I did use the native methods forum, I wasnt lucky. I Hope more people would look into this forum, which brings me here.
    I have a solaris application which crashes when I try to callback the JAVA methods and variables from the native code. The description of the problem is below
    Written a native library, the library is multithreaded (i.e) I create a thread using pthread_create() in the native code which performs the operation of calling a JAVA method from the native code. The routine of calling the JAVA method works perfectly elsewhere outside the new thread.
    There are two scenarios I've tested it in
    1. I created a thread (say X) from the main thread (say Y) and made the y to wait until the X is complete using the pthread_join(). The JAVA callbacks works fine when called from Y but the app crashes if done from X.
    2. Did not make the Y to wait until the X is complete, hoping that both will run paralelly and even the the App crashes.
    And to be precise the Y is the thread where the native method is called from JAVA.
    I have tested for any memory leaks or stack corruption by removing the JAVA callbacks and bulding a executable and using purify, the report doesnot hint any such occurances.
    The linker options used for building the shared library is as follows
    ${GPP} ${INC} -G ${LIB} -mt -g -lCstd -lCrun -lpthread ${OBJS} -o <lib-name>
    I wonder if we can create threads in the native code when using JAVA callbacks and even if we can whether it would be appropiate to use the callbacks with in the threads
    Looking forward for any help.
    Regards,
    Vamsi

    Guys... can't any one help me with this problem :(

  • App crash when using JNI callbacks

    Hi all,
    I have a solaris application which crashes when I try to callback the JNI methods from the native code. The description of the problem is below
    Written a native library, the library is multithreaded (i.e) I create a thread using pthread_create() in the native code which performs the operation of calling a JAVA method from the native code. The routine of calling the JAVA method works perfectly from elsewhere.
    There are two scenarios I've tested it in
    1. I created a thread (say X) from the main thread (say Y) and made the y to wait until the X is complete using the pthread_join(). The JAVA callbacks work fine when called from Y but the app crashes if done from X.
    2. Did not make the Y to wait until the X is complete, hoping that both will run paralelly and even the the App crashes.
    And to be precise the Y is the thread where the native method is called from JAVA.
    I have tested for any memory leaks or stack corruption by removing the JAVA callbacks and bulding a executable and using purify, the report doesnot hint any such occurances.
    The linker options used for building the shared library is as follows
    ${GPP} ${INC} -G ${LIB} -mt -g -lCstd -lCrun -lpthread ${OBJS} -o <lib-name>
    I wonder if we can create threads in the native code when using JAVA callbacks and even if we can whether it would be appropiate to use the callbacks with in the threads
    Looking forward for any help.
    Regards,
    Vamsi

    Guys... can't any one help me with this problem :(

  • Get row id after EJB create method.

    Hi,
    does any one know how to get an id of new created by CMP ejb row? When I create new object it's id is 0, when i call ejb create it creates new row in DB and crates new ID by increasing the old one, but how can I get this new ID after create has finished?
    Now I have to look equals by some fields object in DB after creation, looks ugly.

    So here is my CMP :
    * @ejb.bean name="Dividend"
    * type="CMP"
    * view-type="local"
    * primkey-field="id"
    * schema="dividends"
    * cmp-version="2.x"
    * @ejb.value-object name="Dividend"
    * match="*"
    * @ejb.transaction type="Required"
    * @ejb.persistence table-name="dividends"
    * @ejb.finder signature="Collection findAll()"
    * query="SELECT OBJECT(d) FROM dividends d"
    * @jboss.query signature="Collection findAll()"
    * @ejb.finder signature="Dividend findByActivityId(java.lang.Integer activityId)"
    * query="SELECT OBJECT(d) FROM dividends d WHERE d.activityId = ?1"
    * @jboss.query signature="Dividend findByActivityId(java.lang.Integer activityId)"
    * strategy="on-load"
    * @jboss.persistence create-table="false"
    * remove-table="false"
    * datasource="java:/ChronimDS"
    * datasource-mapping="mySQL"
    public abstract class DividendBean implements EntityBean {
    //~ Methods ----------------------------------------------------------------
    //==========================================
    // Business methods
    //==========================================
    * @ejb.interface-method
    public Dividend getDividend() {
    Dividend dividend = new Dividend();
    dividend.setId(this.getId());
    dividend.setActivityId(this.getActivityId());
    dividend.setLower(this.getIsLower());
    dividend.setLowerAmount(this.getLowerAmount());
    return dividend;
    * @ejb.interface-method
    public void setDividend(Dividend dividend) {
    this.setActivityId(dividend.getActivityId());
    this.setIsLower(dividend.isLower());
    this.setLowerAmount(dividend.getLowerAmount());
    //==========================================
    // CMP fields
    //==========================================
    * @ejb.pk-field
    * @ejb.persistence column-name="id"
    * jdbc-type="INTEGER"
    * sql-type="INTEGER"
    * @ejb.interface-method
    * @ejb.transaction type="NotSupported"
    public abstract Integer getId();
    public abstract void setId(Integer id);
    * @ejb.persistence column-name="activityId"
    * jdbc-type="INTEGER"
    * sql-type="INTEGER"
    public abstract Integer getActivityId();
    public abstract void setActivityId(Integer activityId);
    * @ejb.persistence column-name="isLower"
    * jdbc-type="TINYINT"
    * sql-type="TINYINT"
    public abstract boolean getIsLower();
    public abstract void setIsLower(boolean isLower);
    * @ejb.persistence column-name="lowerAmount"
    * jdbc-type="INTEGER"
    * sql-type="INTEGER"
    public abstract Integer getLowerAmount();
    public abstract void setLowerAmount(Integer lowerAmount);
    //==========================================
    // EJB callbacks
    //==========================================
    * @ejb.create-method
    public Integer ejbCreate(Dividend dividend)
    throws CreateException {
    this.setId(dividend.getId());
    this.setIsLower(dividend.isLower());
    this.setLowerAmount(dividend.getLowerAmount());
    this.setActivityId(dividend.getActivityId());
    return null;
    public void ejbPostCreate(Dividend dividend)
    throws CreateException {
    // EntityBean (empty) implementation
    public void setEntityContext(javax.ejb.EntityContext ec) {
    public void unsetEntityContext() {
    public void ejbLoad() {
    public void ejbStore() {
    public void ejbActivate() {
    public void ejbPassivate() {
    public void ejbRemove() {
    As you can see I'm using xdoclets.
    Suppose I need to create new row of this object :
    Dividend d = new Dividend();
    // fill dividend by values here but do not set it's id it is 0 before creation
    // SQL server will set it automaticly
    Object ref = context.lookup("DividendLocal");
    DividendLocalHome dividendLocal = (DividendLocalHome) ref;
    dividendLocal.create(dividend)
    I create new row of dividend in my DB and want to get an ID of the new created row, I thought that dividend object will get this ID after creation automaticly, but no, his id is 0.
    so here id will be 0 :
    dividendLocal.create(dividend);
    int id = dividend.getId(); // 0
    and if I write this
    dividendLocal.create(dividend).getId();
    I get :
    2007-06-25 14:44:02,384 ERROR [org.jboss.ejb.plugins.LogInterceptor]
    EJBException in method: public abstract java.lang.Integer
    com.xxx.xxx.ejb.SessionFacade.createDividend(
    xxx.xxx.model.Contract) throws java.rmi.RemoteException:
    javax.ejb.NoSuchObjectLocalException: Entity not found: primaryKey=0

  • Java method call from c passing string more info

    I am trying to call a java method from c passing a String as an argument.
    my C code is as follows.
    //Initalise jstring and class (to recieve String)
    jstring textp;
    jclass texts = (*env)->GetObjectClass(env, obj);
    jmethodID text = (*env)->GetMethodID(env, texts, "texture", "([Ljava/lang/String;)V");
    //Create a new jstring from the char* texturePath (in textures)
    //call the java method with the jstring
    textp = (*env)->NewStringUTF(env,ret.textures->texturePath);
    (*env)->CallVoidMethod(env, obj, text,textp);
    //java code
    // texture which recieves a string
    public void texture(String texturePath){
    The error I get is as follows:
    SIGSEGV 11 segmentation violation
    si_signo [11]: SEGV
    si_errno [0]:
    si_code [1]: SEGV_MAPERR [addr: 0xc]
    stackpointer=FFBED790
    "Screen Updater" (TID:0x4f9060, sys_thread_t:0x4f8f98, state:CW, thread_t: t@11, threadID:0xf2d31d78, stack_bottom:0xf2d32000, stack_size:0x20000) prio=4
    [1] java.lang.Object.wait(Object.java:424)
    [2] sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
    [3] sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
    "AWT-Motif" (TID:0x40be50, sys_thread_t:0x40bd88, state:R, thread_t: t@10, threadID:0xf2d71d78, stack_bottom:0xf2d72000, stack_size:0x20000) prio=5
    [1] sun.awt.motif.MToolkit.run(Native Method)
    [2] java.lang.Thread.run(Thread.java:479)
    "SunToolkit.PostEventQueue-0" (TID:0x431950, sys_thread_t:0x431888, state:CW, thread_t: t@9, threadID:0xf2e71d78, stack_bottom:0xf2e72000, stack_size:0x20000) prio=5
    [1] java.lang.Object.wait(Object.java:424)
    [2] sun.awt.PostEventQueue.run(SunToolkit.java:407)
    "AWT-EventQueue-0" (TID:0x430ea8, sys_thread_t:0x430de0, state:CW, thread_t: t@8, threadID:0xf3071d78, stack_bottom:0xf3072000, stack_size:0x20000) prio=6
    [1] java.lang.Object.wait(Object.java:424)
    [2] java.awt.EventQueue.getNextEvent(EventQueue.java:212)
    [3] java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:100)
    [4] java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:91)
    [5] java.awt.EventDispatchThread.run(EventDispatchThread.java:83)
    Exiting Thread (sys_thread_t:0xff343db0) : no stack
    "Finalizer" (TID:0x154e98, sys_thread_t:0x154dd0, state:CW, thread_t: t@6, threadID:0xfe391d78, stack_bottom:0xfe392000, stack_size:0x20000) prio=8
    [1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
    [2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
    [3] java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run(Finalizer.java:124)
    "Reference Handler" (TID:0x1506a0, sys_thread_t:0x1505d8, state:CW, thread_t: t@5, threadID:0xfe3c1d78, stack_bottom:0xfe3c2000, stack_size:0x20000) prio=10
    [1] java.lang.Object.wait(Object.java:424)
    [2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
    "Signal dispatcher" (TID:0x13d180, sys_thread_t:0x13d0b8, state:MW, thread_t: t@4, threadID:0xfe3f1d78, stack_bottom:0xfe3f2000, stack_size:0x20000) prio=10
    "main" (TID:0x38918, sys_thread_t:0x38850, state:R, thread_t: t@1, threadID:0x25228, stack_bottom:0xffbf0000, stack_size:0x800000) prio=5 *current thread*
    [1] loader.Callbacks.nativeMethod(Native Method)
    [2] loader.Callbacks.main(Callbacks.java:184)
    [3] graphics.GR_MakeTrack.init(GR_MakeTrack.java:60)
    [4] graphics.GR_MakeTrack.main2(GR_MakeTrack.java:49)
    [5] graphics.GR_MakeTrack.main(GR_MakeTrack.java:41)
    [6] control.GE_main.GE_main1(GE_main.java:87)
    [7] control.GE_main.main(GE_main.java:66)
    gmake: *** [run] Abort (core dumped)

    I am trying to call a java method from c passing a
    String as an argument.
    my C code is as follows.
    //Initalise jstring and class (to recieve String)
    jstring textp;
    jclass texts = (*env)->GetObjectClass(env, obj);
    jmethodID text = (*env)->GetMethodID(env, texts,
    "texture", "([Ljava/lang/String;)V");
    Hi Pete,
    your problem is that the method texture you are trying to find does not exist. If you look carefully at your declaration of the method signature in the GetMethodID call you will see "([Ljava/lang/String;)V" which is trying to find a method that accepts a String array as its parameter. Remove the [ from the method signature and it should work ok. You might want to test text (jmethodID) for NULL or 0 before trying to call it as well.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • WAAS Deployement : Inline Vs Off-path

    Hi All,
    I would like to get your expertise on deciding  suitable deployement method.
    We have to deploy the WAAS solution between a DC and 70+ branch locations ( expected TCP connections in each <= 200) which are connected through provider managed MPLS cloud . Decided to use WAE 7341 (with WCCP redirection method)as the WAE in DC side but when it comes to branch side still thinking between INLINE ( WAVE 274) vs WCCP (ISR router with NME) . Basically , would like to understand more about ..
    a) Difference between Inline and Off-path deployement in all aspects.
    b) Does inline deployement with WAVE 274 ( has 2 NIC ) passes through the traffic in case of Power / device failure
    We have been did PoC with WCCP method , it was very stable and got good respone. We would like to use inline method as it is the  low cost solution, if it can provide same level STABLITIY + RESPONSE.
    Regards,
    Maria

    Hi Maria,
    I don't know exactly which aspects you are interested in but usually, WCCP is used when we want to spread the load over multiple WAE as it is easier to achieve then with Inline interfaces.
    Now, as in your case, you'll be only using one NME, so it doesn't apply.
    Another difference is that the module is integrated inside your router while the WAVE obviously isn't so it will require additional cabling in your network.
    Inline acceleration will not add any processing load to your router while WCCP will. Even if this load increase might not be that high, you might want to think about it if your routers are already heavily used.
    If you have any other aread you would like to get more info on, let me know and I'll see what I can do for you.
    Regarding your question on what would happen if the WAVE gets powered off or fails completely, the inline interface has an hardware bypass mechanism that will kick off if this occurs and the device will simply start bridging the traffic between the two sides of the interface, preventing a network outage.
    Regards,
    Nicolas

  • Updated Web Services and Pageflow design view available via eclipse update

    All,
    An eclipse update to Workshop for WebLogic Platform 9.2 is now available.
    The new features available in this update are listed below
    <b>Web Service Design View:</b> The web service Design View lets you design all of the major features of a web service using a graphical development environment. The following features are included:
    * Creation of web methods, callbacks, and event handlers
    * Direct configuration of conversational and buffering properties
    * Inline method signature editing, with syntax highlighting and code completion
    * Simultaneous editing of separate interface and implementation files
    * Improved error detection and messaging
    <b>Page Flow Overview. </b>The Page Flow Overview gives a graphical overview of an entire page flow, including its JSP pages, actions, and navigational relationships. This high-level view of a page flow gives the developer a total picture of how a page flow is structured. The following features are included:
    * Continuous automatic graph layout
    * Improved layout algorithm
    * Selection is synchronized with the Page Flow Editor
    * Graph Tracing mode makes reading complex graphs easier
    * Print graphs or export them as images
    <b>
    Improved Test Client functionality. </b>The Test Client now supports directly testing services that have callbacks as well as services that have only JMS as a transport. The Test Client is downloaded along with the Workshop for WebLogic 9.2.1 update, but it must be installed manually. For details on installing and using the Test Client to test web services, see Testing Web Services with the Test Client.
    <b>Cheat Sheets. </b>A variety of cheat sheets are now available to get you started with Workshop for WebLogic.
    The following cheat sheets are available:
    * NetUI Web Application: Hello World
    * Web Service Application: Hello World
    * Using XMLBeans
    Additional information is available at http://e-docs.bea.com/workshop/docs92/ws_platform/introduction/conWhatsNew.html
    cheers
    Raj

    Hi Geoff,
    I have placed a zip file which contains the Workshop 9.2.1 update on a ftp server at ftp://support:[email protected]/pub/w4wp/w4wpUpdate.zip
    Make sure you download the file and follow the instructions listed below
    Launch workshop
    Help>Software Updates>Find and Install...
    Select "Search for new features to install" and hit Next
    Click on the New Archived Site button
    Wait for the "Select Local Site Archive" dialog to appear
    Enter, or browse to, the location of the archive file (it can be referenced using either http:// or file path syntax depending on where it was placed by the user or their sys admin) and hit Open
    Hit Finish
    Select BEA Workshop for WebLogic Platform 9.2.1.0 and hit Next
    Select "I accept the terms in the license agreement" and hit Next
    Hit Finish
    Wait for the Feature Verification dialog to appear
    Hit Install All
    Hit Yes when prompted to restart the workbench
    Cheers
    Raj

  • Multiple return values (Bug-ID 4222792)

    I had exactly the same request for the same 3 reasons: strong type safety and code correctness verification at compile-time, code readability and ease of mantenance, performance.
    Here is what Sun replied to me:
    Autoboxing and varargs are provided as part of
    JSRs 14 and 201
    http://jcp.org/en/jsr/detail?id=14
    http://jcp.org/en/jsr/detail?id=201
    See also:
    http://forum.java.sun.com/forum.jsp?forum=316
    http://developer.java.sun.com/developer/earlyAccess/adding_generics/index.html
    Multiple return values is covered by Bug-ID 4222792
    Typically this is done by returning an array.
    http://developer.java.sun.com/developer/bugParade/bugs/4222792.html
    That's exactly the problem: we dynamically create instances of array objects that would better fit well within the operand stack without stressing the garbage collector with temporary Array object instances (and with their backing store: 2 separate allocations that need to be recycled when it is clearly a pollution that the operand stack would clean up more efficiently)
    If you would like to engage in a discussion with the Java Language developers, the Generics forum would be a better place:
    http://forum.java.sun.com/forum.jsp?forum=316
    I know that (my report was already refering to the JSR for language extension) Generics is not what I was refering to (even if a generic could handle multiple return values, it would still be an allocated Object
    instance to pack them, i.e. just less convenient than using a static class for type safety.
    The most common case of multiple return values involve values that have known static datatypes and that should be checked with strong typesafety.
    The simple case that involves returning two ints then will require at least two object instances and will not solve the garbage collection overhead.
    Using a array of variable objects is exactly similar, except that it requires two instances for the components and one instance for the generic array container. Using extra method parameters with Integer, Byte, ... boxing objects is more efficient, but for now the only practical solution (which causes the least pollution in the VM allocator and garbage collector) is to use a custom class to store the return values in a single instance.
    This is not natural, and needlessly complexifies many interfaces.
    So to avoid this pollution, some solutions are used such as packing two ints into a long and returning a long, depacking the long after return (not quite clean but still much faster at run-time for methods that need to be used with high frequencies within the application. In some case, the only way to cut down the overhead is to inline methods within the caller code, and this does not help code maintenance by splitting the implementation into small methods (something that C++ can do very easily, both because it supports native types parameters by reference, and because it also supports inline methods).
    Finally, suppose we don't want to use tricky code, difficult to maintain, then we'll have to use boxing Object types to allow passing arguments by reference. Shamely boxed native types cannot be allocated on the operand stack as local variables, so we need to instanciate these local variables before call, and we loose the capacity to track the cases where these local variables are not really initialized by an effective call to the method that will assign them. This does not help debugging, and is against the concept of a strongly typed language like Java should be:
    Java makes lots of efforts to track uninitialized variables, but has no way to determine if an already instanciated Object instance refered in a local variable has effectively received an effective assignment because only the instanciation is kept. A typical code will then need to be written like this:
    Integer a = null;
    Integer b = null;
    if (some condition) {
    //call.method(a, b, 0, 1, "dummy input arg");
    // the method is supposed to have assigned a value to a and b,
    // but can't if a and b have not been instanciated, so we perform:
    call.method(a = new Integer(), b = new Integer(), 0, 1, "dummy input
    arg");
    // we must suppose that the method has modified (not initialized!)
    the value
    // of a and b instances.
    now.use(a.value(), b.value())
    // are we sure here that a and b have received a value????
    // the code may be detected at run-time (a null exception)
    // or completely undetected (the method() above was called but it
    // forgot to assign a value to its referenced objects a and b, in which
    // case we are calling in fact: now.use(0, 0); with the default values
    // or a and b, assigned when they were instanciated)
    Very tricky... Hard to debug. It would be much simpler if we just used:
    int a;
    int b;
    if (some condition) {
    (a, b) = call.method(0, 1, "dummy input arg");
    now.use(a, b);
    The compiler would immediately detect the case where a and b are in fact not always initialized (possible use bere initialization), and the first invoked call.method() would not have to check if its arguments are not null, it would not compile if it forgets to return two values in some code path...
    There's no need to provide extra boxing objects in the source as well as at run-time, and there's no stress added to the VM allocator or garbage collector simply because return values are only allocated on the perand stack by the caller, directly instanciated within the callee which MUST (checked at compile-time) create such instances by using the return statement to instanciate them, and the caller now just needs to use directly the variables which were referenced before call (here a and b). Clean and mean. And it allows strong typechecking as well (so this is a real help for programmers.
    Note that the signature of the method() above is:
    class call {
    (int, int) method(int, int, String) { ... }
    id est:
    class "call", member name "method", member type "(IILjava.lang.string;)II"
    This last signature means that the method can only be called by returning the value into a pair of variables of type int, or using the return value as a pair of actual arguments for another method call such as:
    call.method(call.method("dummy input arg"), "other dummy input arg")
    This is strongly typed and convenient to write and debug and very efficient at run-time...

    Can anyone give me some real-world examples where
    multiple return values aren't better captured in a
    class that logically groups those values? I can of
    course give hundreds of examples for why it's better
    to capture method arguments as multiple values instead
    of as one "logical object", but whenever I've hankered
    for multiple return values, I end up rethinking my
    strategy and rewriting my code to be better Object
    Oriented.I'd personally say you're usually right. There's almost always a O-O way of avoiding the situation.
    Sometimes though, you really do just want to return "two ints" from a function. There's no logical object you can think of to put them in. So you end up polluting the namespace:
    public class MyUsefulClass {
    public TwoInts calculateSomething(int a, int b, int c) {
    public static class TwoInts {
        //now, do I use two public int fields here, making it
        //in essence a struct?
       //or do I make my two ints private & final, which
       //requires a constructor & two getters?
      //and while I'm at it, is it worth implementing
      //equals(), how about hashCode()? clone()?
      //readResolve() ?
    }The answer to most of the questions for something as simple as "TwoInts" is usually "no: its not worth implementing those methods", but I still have to think about them.
    More to the point, the TwoInts class looks so ugly polluting the top level namespace like that, MyUsefulClass.TwoInts is public, that I don't think I've ever actually created that class. I always find some way to avoid it, even if the workaround is just as ugly.
    For myself, I'd like to see some simple pass-by-value "Tuple" type. My fear is it'd be abused as a way for lazy programmers to avoid creating objects when they should have a logical type for readability & maintainability.
    Anyone who has maintained code where someone has passed in all their arguments as (mutable!) Maps, Collections and/or Arrays and "returned" values by mutating those structures knows what a nightmare it can be. Which I suppose is an argument that cuts both ways: on the one hand you can say: "why add Tuples which would be another easy thing to abuse", on the other: "why not add Tuples, given Arrays and the Collections framework already allow bad programmers to produce unmainable mush. One more feature isn't going to make a difference either way".
    Ho hum.

  • PDF from Interactive Report is corrupt

    Just created an Interactive report under 3.1.1 of Apex
    Selected the PDF and CSV options.
    CSV is fine.
    When PDF is selected it appears to be created.
    However, when it is opened Adobe Acrobat gives and error (not support or damaged file type).

    No Christina,
    First I went under report attributes on Interactive reports under download
    Download formats:
    CSV and PDF
    I checked both. CSV format is fine. PDF format is corrupt.
    Next I then went in using the below:
    http://www.oracle.com/technology/obe/apex/apex31nf/apex31rpt.htm
    It tells me I don't have a print server defined. I am trying to get the INLINE method to work.
    I see in the ADMIN there is a print server configuration section though it is not totally clear as I would think that you would get the default print configuration as you would with any other PDF docuement.

  • PDF from Interactive Report - general question

    Hello,
    I read in another post that there may be plans to make it so that PDFs downloaded from an Interactive Report will include the formatting in the report. Is this true? If so, will it work with the Apache FOP?
    Regards,
    Dan
    http://danielmcghan.us
    http://sourceforge.net/projects/tapigen

    No Christina,
    First I went under report attributes on Interactive reports under download
    Download formats:
    CSV and PDF
    I checked both. CSV format is fine. PDF format is corrupt.
    Next I then went in using the below:
    http://www.oracle.com/technology/obe/apex/apex31nf/apex31rpt.htm
    It tells me I don't have a print server defined. I am trying to get the INLINE method to work.
    I see in the ADMIN there is a print server configuration section though it is not totally clear as I would think that you would get the default print configuration as you would with any other PDF docuement.

Maybe you are looking for

  • 790FX-GD70 Won't Post

    I bought the 790FX-GD70 in January and I'm just now finishing the build (don't ask). I waited to buy the CPU until last, so I got the X6 1090T. The current BIOS is 7577 1.0 and I have every intention of updating it to 1.C as soon as I can get to the

  • Deleting i-tunes from hard disk

    When I delete a song from my library, there is no pop-up option to delete the song from my hard disk. I need to free up space. I am using the Windows XP portion of my Mac. Can anyone help me? Thanks

  • How to call setter Method of ActionScript class with in a Flex Application

    Hi I have Action class as shown : public class MyClass private var name:String  public function get name():String {     return _initialCount; public function set name(name:String):void {     name = name; Now please let me know how can i access this A

  • Topics per Page in Discussion

    Hi everyone I would like to change the default number of Topics per Page when going into a discussion. As default the number of Topics per page is set to 5 and number of posts per discussion is set to 3 (Would like 10 and if possible show as tree vie

  • Can't connect shared variable engine

    HI All, LabVIEW 2009  + DSC We have one test laptop on our local network. Other developers read values of some variables from that laptop. Now we have a new developer and computer. When we try to browse test laptop from network it can be found but we