Question about object retention and scope

I have a hole in my understanding of Cocoa.
I can create temp objects, to populate an array with, like this:
for(int i=0;i<10;i++)
myObject *tmpObj= [[[myObject alloc] init]] ;
[[myMutableArray addObject:tmpObj]];
[[tmpObj release]];
But I don't understand why this works. If the tmpObjects get released, then why don't the ones in the array get released? (I can access the array later, and it is populated with myObjects.)

If you create an object from scratch (alloc, etc) then it's up to you to release it.
If you get an object from another method of the system you don't have to worry about releasing it. More than likely it's set to auto-release but it's not your responsibility.
If you want to hold on to any object then you retain it if you didn't create it. Any object you've retained you're responsible for releasing.
If you pass an object before releasing it's up to that object to hold on to it if it needs it.
Links:
http://www.stepwise.com/Articles/Technical/2001-03-11.01.html
http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Tasks/Memor yManagementRules.html
Article on leaks
http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instrume nts/

Similar Messages

  • Questions about Objects, pointers, and the memory that loves them

    Hey,
    This is all just a theoretical discussion so do understand that the code itself is not germane to the topic.
    I have been mulling over the whole object release/retain/copy thing and need to understand a bit more the real inner workings of the beast. The catalyst for this is the repetitional fervor that most books on the subject of Objective C have employed. Yet they all seem to fail in a complete explanation of the whys and wherefores so that one can determine on her own the correct implementation of this.
    Let's say I have an Object. For the fun of it it is an instance of NSObject and we'll call it myObject.
    When I "create" this object thusly:
    NSObject *myObject = [[NSObject alloc] init];
    What I, in fact get back is a pointer to the object in question, yes?
    So when I "seemingly" add this object to an array like:
    NSArray *myArray = [[NSArray alloc] initWithObject:myObject];
    What is actually placed in the array? is it another pointer to the original object created by myObject or is it a pointer to the pointer of myObject?
    The reason I ask this is because I have run into a situation where some previous instructions on the subject have caused errors. I was told that if I did something like this and then passed the array to a calling method that I could release this array and it would then be the responsibility of the calling method to handle the memory. Further more if I place an object into an array and then copy it into another object of the same type as the original then I could release the array and still have the reference to the first object in the second object. When I have done this I get unpredictable results, sometimes the original object is there and sometimes it isn't
    At what point should I release the array, after it is passed to the calling method (with the use of an autorelease) or when the class that it is encapsulated in is done?
    Sorry about the length of this but I can't believe that I would be the only one that would be helped by such a discussion.
    MM

    etresoft,
    Thanks for the detailed reply. I wish I could say that I wasn't still a bit confused by this. I thought I had this down after going through the lessons. It seems to not be working in practice the way that it works in theory.
    My current project is an example
    In a class I have declared a couple of ivars thusly:
    NSMutableString *source;
    NSMutableString *destination;
    @property (nonatomic, retain) NSMutableString *source;
    @property (nonatomic, retain) NSMutableString *destination;
    This is followed by the appropriate @synthesize directives.
    in the init method for my class I have the following:
    source = [[NSMutableString alloc] initWithString:@"customer"];
    destination = [[NSMutableString alloc] initWithString:@"home"];
    in a method triggered by a button click I have the following:
    if (sender == sourcePop){
    source = [sourcePop titleOfSelectedItem];
    }else{
    destination = [destinationPop titleOfSelectedItem];
    NSLog(@"SOURCE-%@", source);
    NSLog(@"DESTINATION-%@", destination);
    When I run the code and change the source selection the console reads the correct value for what is in the source popupbutton and "home" for the destination. If I then change the destination popupbutton I get a crash and nothing written to the console.
    Placing a breakpoint at the beginning of the "if" and running shows me that just before the crash the source ivar is reported as "out of scope." There are no release or autorelease statements for this ivar anywhere in the class. Yet if I change the line that sets the ivar to the value of the popupbutton to this:
    [source = [sourcePop titleOfSelectedItem] retain];
    The debugger will have the correct value for the ivar and when run normally there is no crash.
    I would assume that the problem is that the ivar is being released but I am not the one releasing it. Why does this behavior happen? Shouldn't the retain count still be 1 since the @property directive has it and there is no release in the code? Or is it that the statement that sets the ivar to the value of the popup really just setting it to the pointer and it is the popup that is somehow being released?
    Is there something else that I should be doing?
    MM

  • Question About Color's and Gradients

    Hi all,
    I have a question about color swatches and gradients.
    I am curious to know, if I have 2 color swatches that I make into a gradient color, is it posible to change the tint of each indivdual color in that gradient and have that applied to the gradient without having to adjust the gradients opacity.
    The reason that I'm asking this is because in creating a project I found that the colors that I chose for to make my gradient from my swatches were to dark, and while I can adjust each one's tint to my liking (if the object they were applied to was going to be a solid color) but that doesn't seem to apply to the overall gradient.
    I hope that makes sense, I know that this was something that was able to be accomplished in quark and was wondering if I can do something similar.

    If you double click your gradient swatch (after adding it to the swatches)
    Then click a colour stop in the gradient, and then change the drop down menu to CMYK (or rgb)
    And you can alter the percentages there. It's not much use for spot colours but it's a start.
    But making tint swatches would be a good start anyway.
    At least then when you double click the gradient (in the swatches) to edit it you can choose from CMYK, RGB, LAB, or Swatches and adjust each colour stop to your liking.

  • A question about Object Class

    I got a question about Object class in AS3 recently.
    I typed some testing codes as following:
    var cls:Class = Object;
    var cst:* = Object.prototype.constructor;
    trace( cls === cst); // true
    so cls & cst are the same thing ( the Object ).
    var obj:Object = new Object();
    var cst2:* = obj.constructor.constructor;
    var cst3:* = obj.constructor.constructor.c.constructor;
    var cst5:* = Object.prototype.constructoronstructor;
    var cst4:* = Object.prototype.constructor.constructor.constructor;
    var cst6:* = cls.constructor;
    trace(cst2 === cst3 && cst3 === cst4 && cst4 === cst5 && cst5 === cst6); //true
    trace( cst == cst2) // false
    I debugged into these codes and found that cst & cst2 had the same content but not the same object,
    so why cst & cst2 don't point to the same object?
    Also, I can create an object by
    " var obj:Object = new cst();"
    but
    " var obj:Object = new cst2();"
    throws an exception said that cst2 is not a constructor.
    Anyone can help? many thanks!

    I used "describeType" and found that "cst2" is actually "Class" class.
    So,
    trace(cst2 === Class); // true
    That's what I want to know, Thank you.

  • Question about clear page and reset pagination

    Hi,
    I have a question about clear pages and the reset pagination in an URL. What is the reason why a clear page doesn't also trigger a reset pagination on the pages which are cleared?
    I can't really imagine a business case where it makes sense to clear all data of page items on a page and don't reset the pagination of reports on that page which probably use a page item in there where clause...
    The drawback of this behavior is that a developer always has to set the reset pagination checkbox when he clears the target page and the even bigger drawback is that if you specify other pages to clear, you can't reset pagination for them, because reset pagination only works for the target page.
    Thanks for your input.
    Patrick
    *** New *** Oracle APEX Essentials *** http://essentials.oracleapex.info/
    My Blog, APEX Builder Plugin, ApexLib Framework: http://www.oracleapex.info/

    Enhancement request filed, thanks,
    Scott

  • The question about portlet customization and synchronization

    I have a question about portlet customization and synchronization.
    When I call
    NameValuePersonalizationObject data = (NameValuePersonalizationObject) PortletRendererUtil.getEditData(portletRenderRequest);
    portletRenderRequest.setPortletTitle(str);
    portletRenderRequest.putString(aKey, aValue);
    PortletRendererUtil.submitEditData(portletRenderRequest, data);
    Should I make any synchronization myself (use "synchronized" blocks or something else) or this procedure is made thread-safe on the level of the Portal API?

    HI Dimitry,
    I dont think you have to synchronize the block. i guess the code is synchronized internally.
    regards,
    Harsha

  • A question about item "type and release" of  source system creation

    Hello expert,
    I have a question about item "type and release" of  source system creation.
    As we know,when we create a web servie source system,there will display a pop-up which includes three items as "logical system","source system"and "type and release".
    About the item "type and release",when we push "F4" button,there will be three default selections as below:
    "ORA 115     Oracle Applications 11i
    TLF 205     Tealeaf 2.05B
    XPD 020     SAP xPD".
    Who can tell me when and how should I use the three selections.
    And also I attempted to input the item by some optional letters except the default three selections and it seems that I can input it freely.
    Thank you and Best Regards,
    Maggie

    Hello DMK,
    Thank you very much for your answer.It is very helpful for me.
    Can I ask you further about it?
    I got that it is a semantic description item.
    You said the default selections are set by our basis people.Would you like to tell me how should we creat a new value except the default ones for item "type and release"?Only by inputing the value in the item directly?But you see we canot see the new value item we created by ourself when we push "F4" button next time ,is that ok?Or do we have to ask basis people to define one new value item just like the default seletions before we use it.
    Also if possible would you like to describe detail about "This becomes important when you are troubleshooting certain issues especially when RFC connection problems."
    Thank you and Best Regards,
    Maggie
    Message was edited by: Maggie

  • A few questions about the ka790gx and dka790gx

    i have a few questions about the ka790gx and dka790gx , how much better is the dka790gx compaired to the ka790gx ? . how much difference does the ACC function make to overclocking etc , i plan on getting a phenom II 940BE or 720BE . i already have the ka790gx so would it be worth building another system using the dka790gx mobo , or should i keep what i already have and just change the cpu ?

    It's largely irrelevant what other boards had VRM issues other than the KA790GX - the fact is it died at stock settings. Since there is little cost difference between the more robust DKA790GX (or Platinum if you really need 1394) why bother with the proven weakling? There are other examples around of the KA not having a robust power section.  There's no way I would use even a 95W TDP CPU in the KA and absolutely not O/C.....!
    As for the credentials of Custom PC, I have generally found their reviews accurate and balanced, and echo my own findings where applicable. If a little too infrequent.
    The fact that the KA has such a huge VRM heatsink leads me to my other comments on the Forum, particularly regarding the "fudge" aspect:
    """Henry is spot on - the notion that adding a heatsink to the top of the D2PAK or whatever MOSFETS is effective is virtually worthless. The device's die thermal junction is the tab on the device back - which is always against the PCB pad. The majority of heat is therefore dissipated in to the board, and the fact that the epoxy plastic encapsulation gets hot is simply due to the inability of the heat to be conducted away from the device die via the tab. Not sure when Epoxy become an effective conductor of heat.... Good practice is to increase the size of the PCB pad (or "land" in American) such that the enlarged PCB copper area acts as an adequate heatsink. This is still not as effective as clamping a power device tab to an actual piece of ali or copper, but since the devices used are SMD devices, this is not possible. However, the surface area required to provide sufficient PCB copper area to act as a heatsink for several devices isn't available in the current motherboard layouts. Where industrial SBC designs differ in this respect is to place the VRM MOSFETs on the back of the PCB on very enlarged PCB pads - where real estate for components is not an issue.
    Gigabyte's UD3 2oz copper mainboards sound like a good idea, on the face of it. However, without knowing how they have connected the device tabs to where and what remains a mystery. I suspect it is more hype than solution, although there will be some positive effect. From an electrical perspective, having lower resistance connecting whatever to whatever (probably just a 0V plane) is no bad thing.
    The way the likes of ASUS sort of get round the problem is to increase the sheer number of MOSFET devices and effectively spread the heat dissipation over a larger physical area. This works to a degree, there is the same amount of heat being dissipated, but over several more square inches. The other advantage of this is that each leg of the VRM circuit passes less current and therefore localised heat is reduced. Remember that as well as absolute peak operating temperature causing reduced component life, thermal cycling stresses the mechanical aspects of components (die wire bonds for example) as well as the solder joints on the board. Keeping components at a relatively constant temperature, even if this is high (but within operating temperature limits), is a means of promoting longevity.
    For myself, the first thing I do with a seperate VRM heatsink is take it off and use a quiet fan to blow air on to the VRM area of the PCB - this is where the heat is. This has the added benefit of actively cooling the inductors and capacitors too....
    Cooling the epoxy component body is a fudge. If the epoxy (and thus any heatsink plonked on top of it) is running at 60C, the component die is way above that.....
    It's better than nothing, but only just."""

  • Question about navigation in session scope

    Hi.
    I dont know how to resolve a problem or how to focus this stuff.
    I'll try to explain myself.
    Let say I have a page (a.jsf) with several links, all this links navigates to the same page (b.jsf) which shows the results.
    For each link in a.jsf I have attached a bean with a logic, so If I click in link 1 I go to the b.jsf showing data read from the database.table1. If I clik in link2 I go to b.jsf showing data read from database.table2, and so on...
    The beans are in session scope (and must be).
    The first time works ok because I initialize the bean in b.jsf, read data and I show using a selecManyListBox to show it, but if I go back and select another link it goes to b.jsf, but it shows the old data, the data read the first time, because it never calls again the init method.
    Somebody has talked about using an additional bean to control this but once the bean in b.jsf is created I don't know how to call again the init method in beanB (b.jsf)..
    I have attached a very simple project to deploy in eclipse 3.3 and tomcat 6.0. In this example instead of read from database I read from an structure created in memory to simulate this.
    Somebody could take a look and comment something about it.
    http://rapidshare.com/files/197755305/_session-forms.war
    Thanks

    Hi.
    I understand is the same doing in the action method in a button or a commnad, the project is just an example, my real app is a tree, so is not a question about a button or a command, is about the logic being in session scope. I don't know how to face it.
    thanks

  • Question about "Native ISO" and Color Grading in PP

    I have a question about "Native ISO" in the real world and how it relates to color grading.  I was shooting 35mm film before all these digital cameras became flat-out amazing practically overnight.  Then the goal was always to shoot with the lowest ISO possible to achieve the least amount of grain (unless you were making an artistic decision to get that look).  If I was shooting outside plus had a nice lighting package I'd shoot 5201/50 ASA (Daylight) and 5212/100 ASA (Tungsten) 99 times out of 100.
    I've recently been shooting a lot with the Blackmagic 4K and have read that its "Native ISO" is 400.  Because of my film background this seems counter-intuitive.  Yesterday I was shooting for a client and had the camera at an f16 with a 200 ISO.  Because of what I'd read, I was tempted stop down to an f22 and change my ISO to 400... but the "little film voice in my head" just wouldn't let me do it.  It kept telling me "Higher ISO means more noise... stay at 200 and you will get a cleaner image".
    So how does it work with "Native ISO"?  Should I really shoot at a 400 ISO every chance I get in order to capture the best image for how the camera is calibrated?  Will it really give me more latitude when color grading?  Or would I still get a cleaner image staying at ISO 200?   I've Googled around quite, but haven't found any articles that answer specifically this question.  Would love to hear from someone who knows a bit more on the subject or has a link that could point me in the right direction.
    Thanks much.

    Hey, shooter ... yea, interesting discussion and always nice to learn. Great pic, too!
    jamesp2 ...
    Great answer. I've followed quite a bit of the discussion about the BM cams as well, one does feel a need to check out the possibilities for that next beastie one will need to acquire. But ... which one?
    I've always been a bit of a hard-case about testing testing testing. For instance, what happens with dome down or use of a flat diffuser vs. dome in the up position in metering? Back in the film days, we had our own lab and did our own printing as well as the um ... difficult images ... from other studios. I needed to know how to get exactly the same diffuse highlight no matter whether it was a "standard" light 3:1 studio shot, or a near-profile with no fill that needs dark shadows. I tested & burned through boxes of medium-format polaroid & 120 film and a lot of color paper. Finding? To get the same print time no matter the contrast or lighting style, needed to be metered either with the flat disc (Minolta) or dome-down (Sekonic) and held at the highlight-location pointed at the main light source. I could meter and nail the exposure every time. Ahh no, insist so many ... one must have the dome on/up and pointed at the camera! Right. Do that, change the contrast, and see what happens to your diffuse forehead highlight on a densitometer ... and see how your printing exposure times change. Oh, and you've just moved your center-of-exposure up or down on the film's H&D curve, which will also change the way the shadows & highlights print. In truth, though it was subtle, we had realistically no matter latitude for a best-case image with pro neg film as one had with chromes. You could probably get away with being "off" easier, but it still wasn't dead-on.
    So wading into video ... oi vey, you may have noticed the things claimed here there & everywhere ... this setting is God's Gift to Humanity but no, it's total crap ... this sensor is totally flawed but someone else is certain it's the finest piece out there. Yes, opinions will be all over ... but ... in film, it was the densitometer. In video, it's the scopes. Truth. And getting to that can be a right pain. I've seen quite a few contradictory comments about using the BM cams in film mode and also at ISO 200. Yours above gives the most ... comforting? ... explanation (for me) because of your reference to your scopes & the waveform patterns. Thank you.
    Love to learn ...
    Neil

  • Newbie question about C coding and SDK for iPhone app

    Hello,
    I am interested in trying to create an app. However, I have NO experience writing code I already have downloaded and installed the latest version of the SDK.
    I know I have to learn: C, Objective C, and Cocoa.
    I just picked up "C for Dummies" as a starting point. I figured the K&R might be a bit overwhelming to start with. Thing is, "C for Dummies" suggests doing some exercises in Text Edit and then using GCC to compile and test. But, then again, it has a copyright of 2004--long before Snow Leopard.
    My question is, do I really need to do the exercises in Text Edit? Can I just use Xcode for entering the code and testing it? And, any suggestions for learning C and Xcode tutorials are greatly appreciated.
    Thanks!!

    But, I really want to learn coding and not just take the easy route by using Xcode.
    The simplification of using Xcode may have been a bit exaggerated throughout this thread. You will still learn how to program full-on by using Xcode -- it's not like you're taking a shortcut or anything. Well, technically speaking, you are, but Xcode is the expected way to develop on a Mac nowadays -- it's how Apple expects you to develop and how most people are doing so. Should you choose, you can taking a deeper dive into the inner workings of compiling and whatnot by using a text editor and the Terminal, but keep in mind that the extra complexities here could complicate the more important overall goal of learning the basics of how to program. There is absolutely nothing wrong with simply using Xcode for the novice part of your programming days. In fact, it's probably the path I would recommend. Some here might suggest that it is beneficial to learn the intricacies of compiling through the Terminal and whatnot early on, and they are right -- it is beneficial, but the benefits of taking a route (at least for the time being) that allows you to focus on the more pressing issues of learning how to program without having to delve too deeply can be just as beneficial. After all, it's not like you can't go back and learn how to compile via Terminal later on -- that's what I've done (or, rather, am in the process of doing).
    I always thought Terminal was something not to mess with.
    Not so much. Like most things in programming (or life, for that matter), the Terminal is something not to mess with +if you don't know what you're doing+. Basically, it breaks down like this. The GUI that Apple has created for you in Mac OS X (by GUI I mean "graphical user interface" -- the icons and windows and buttons and so forth that you use to perform tasks on your Mac -- in other words, everything outside the Terminal) is geared toward the common user who does not need to access advance aspects of the system's functionality. Consequently, it makes common tasks much simpler to perform, but in the process it hides some of the deeper levels of the system's functionality from the user. This is a good thing, since most people wouldn't know what to do with this functionality and would create problems for themselves if they did have easy access to it. However, for some users who know more about the inner workings of the operating system, there needs to be a way for them to access this functionality, so that they can do certain things (like accessing certain files and performing certain tasks) that they would not be able to do using the Mac OS X GUI -- that's what the Terminal is for. It allows the user to operate the system on a lower level. In other words, it allows you to get closer to the operating system. This is good in a way, because it allows you to perform tasks that you wouldn't otherwise be able to perform by giving you more control over the operating system, but it is also bad in a way, because it can allow you to mess up some of the deeper aspects of your system if you don't know what you are doing. Most people leave the Terminal alone for this reason, and because they have no need of it, but if you want to be a good developer, you're going to have to work with it sooner or later.
    Now, with all that being said, it's not that easy to mess things up using the Terminal. It's not like your system's going to crash if you misspell a command. All in all, the Terminal is very forgiving, but it will do what you tell it to do, even if you tell it to kill itself, and it is for that reason that you need to know what you are telling it before you try to tell it something. If you understand what you are telling the system, than operating on a lower level and being closer to the operating system is completely safe.
    The Mac OS X operating system is based around Unix, so when you are communicating more directly with the operating system by using the Terminal, you are interacting with its Unix core. For this reason, using the Terminal goes hand in hand with understanding Unix. So, if you're going to want to use the Terminal, then I recommend you get a good book on Unix to teach you the basics of Unix commands and shell programming and whatnot. Any book on Unix will do, since more or less everything you learn will be applicable to the Mac OS X's Terminal, but there are a few that are specifically directed to Mac OS X users, and that always makes things easier. Most of these books aren't updated to cover past Tiger, but this really doesn't matter (someone correct me if I'm wrong). A few examples are O'Reilly's "Learning Unix for Mac OS X Tiger" by Dave Taylor or Peachpit Press's "Unix for Mac OS X Tiger" by Matisse Enzer. Also, the book "Unix Programming Environment" by Kernighan and Pike is an excellent book on Unix, although fairly outdated, so I would highly recommend it, although I would recommend it as a supplement to another, more recent, Mac-based Unix book and not as your primary source for learning Unix. The skills you will acquire from these books will help you later if not sooner, so I recommend giving one of them a read at some point, whether you are planning on compiling using the Terminal right now or not.
    Anyways, I hope this helped to clear some of this up for you, and please let us know if you have any further questions.

  • General question about iTunes Match and multiple libraries

    Hello to everyone,
    I have a general question about the iTunes Match service, which is available since yesterday in my country (Italy). Currently my library situation is the following:
    Computer A (desktop, Windows 7): "big" iTunes library (about 20 GB), at the moment not associated with my Apple ID
    Computer B (MacBook Air 2011): "small" iTunes library (about 5 GB), associated with my Apple ID
    At the moment, both my iOS devices (iPhone 4 and iPad 2) are synchronized with the smaller library on the MacBook Air.
    Question is as follows: should I subscribe to iTunes Match, would it be possible to upload the "big" library (provided I associate it with my Apple ID) to iCloud while keeping my devices synchronized with the "small" one?
    Ideally, at the end of the day, the situation should be the following: both iOS devices with music from the small library + possibility of downloading songs from iCloud (coming from the big one). Is this possible?
    Maybe the question sounds stupid, but I want to be sure about this before paying for the service.
    Thanks a lot.

    Yes, you could also associate your larger library with iTunes match if you associated your Apple ID with it. However any purchases in the library made from another Apple ID will not be matched with iTunes much.
    If both libraries are part of iTunes match, then all your devices will see all of the content from both libraries, which content you choose to have on those devices and which you have accessible via iTunes match is entirely up to you.

  • Question about Id3-tags and song managem

    Hello, I am getting ready to buy a Zen Touch 20GB in a couple of weeks and I have a few questions about the management software.
    (Correct me if I am wrong about something)
    ) Are songs organized into groups by Genre instead of just folders like on the Ipod?
    2) Are Id3-tags used instead of filename for identification?
    3) What parts of the tag are needed besides title and artist?
    4) Which version of tags does the Zen Touch recognize: Version or Version 2?
    5) If I edit my tags using an external program such as Id3-TagIT, will the tags carry over to the Creative software and to the player?
    Thanks a lot for your help. I want to make sure I have my music collection in order before I get my Zen Touch.

    euph_jay wrote:Ok, so lets say I have all my music in folders right now seperated into different categories on my hard dri've. Some folders denote the artist, some the album, and some a genre. Example: Folder: Chicago Contents: Chicago .mp3 files Folder: Techno Contents: various Techno artist's songs What is the best way of organizing my folder system, so that the transition will be easy to the player?
    Folders are pretty much irrelevant. What the software will do is look at the *tags* in the files and then use these to build the player's library.
    Will imbedded folders work on the player? (like Techno->Crystal Method->Cystal Method .mp3's)
    Again the player has no concept of folders, although if you set Techno as a Genre tag you will be able to view via this in the Music Library.
    Or, am I misunderstanding how music is stored into the mp3 player. Instead of storing music in a "folder like" system (like the Chicago folder or Techno folder), does it store all the songs individually on the device? Then you have to sort it by artist, album, or genre?
    Using your example, in the Music Library you have essentially three categories: Album, Artist, and Genre. So under Album you would see "Vegas" (the Crystal Method's album), under Artist you would see "The Crystal Method", and under Genre you would see "Techno" (and then either the album or artist under this... I forget which it is offhand).
    Make sense?

  • Few questions about apex + epg and cookie blocked by IE6

    Hi,
    I would like to ask a few questions about apex and epg.
    I have already installed and configured apex 3.2 on oracle 10g (on my localhost - computer name 'chen_rong', ip address -192.168.88.175 ), and enable anonymous access xdb http server.
    now,
    1. I can access 'http://chen_rong' , 'http://localhost' , 'http://192.168.88.175' without input username / password for realm 'XDB' in IE6;
    2. I can access 'http://localhost/apex/apex_admin' , 'http://192.168.88.175/apex/apex_admin' , and I can be redirected into apex administation page after input admin/<my apex admin password> for realm 'APEX' in IE6;
    3. I can access 'http://chen_rong/apex/apex_admin' in IE6, but after input admin/password , I can not be redirected into administation page, because the cookie was blocked by IE6.
    then, the first question is :
    Q1: What is the difference among 'http://chen_rong' , 'http://localhost' , 'http://192.168.88.175' ? I have already include site 'chen_rong' into my trusted stes! why the cookie was blocked by IE6. I have already tried firefox and google browser, both of them were ok for 'chen_rong', no cookie blocked from site 'chen_rong'!
    and,
    1. I have tried to use the script in attachment to test http authentication and also want to catch the cookie by utl_http .
    2. please review the script for me.
    3. I did:
    SQL> exec show_url('http://localhost/apex/apex_admin/','ADMIN','Passw0rd');
    HTTP response status code: 401
    HTTP response reason phrase: Unauthorized
    Please supplied the required Basic authentication username/password for realm XDB for the Web page.
    Web page http://localhost/apex/apex_admin/ is protected.
    MS-Author-Via: DAV
    DAV: 1,2,<http://www.oracle.com/xdb/webdav/props>
    Server: Oracle XML DB/Oracle Database
    WWW-Authenticate: Basic realm="XDB"
    Date: Tue, 04 Aug 2009 02:25:15 GMT
    Content-Type: text/html; charset=GBK
    Content-Length: 147
    ======================================
    PL/SQL procedure successfully completed
    4. I also did :
    SQL> exec show_url('http://localhost/apex/apex_admin/','ANONYMOUS','ANONYMOUS');
    HTTP response status code: 500
    HTTP response reason phrase: Internal Server Error
    Check if the Web site is up.
    PL/SQL procedure successfully completed
    SQL> exec show_url('http://localhost/apex/apex_admin/','SYSTEM','apexsite');
    HTTP response status code: 401
    HTTP response reason phrase: Unauthorized
    Please supplied the required Basic authentication username/password for realm APEX for the Web page.
    Web page http://localhost/apex/apex_admin/ is protected.
    Content-Type: text/html
    Content-Length: 147
    WWW-Authenticate: Basic realm="APEX"
    ======================================
    PL/SQL procedure successfully completed
    my second questions is :
    Q2: After I entered into realm 'XDB', I still need went into realm'APEX'. how could I change the script show_url to accomplish these two tasks and successfully get the cookie from site.
    the show_url script is as following:
    CREATE OR REPLACE PROCEDURE show_url
    (url IN VARCHAR2,
    username IN VARCHAR2 DEFAULT NULL,
    password IN VARCHAR2 DEFAULT NULL)
    AS
    req UTL_HTTP.REQ;
    resp UTL_HTTP.RESP;
    name VARCHAR2(256);
    value VARCHAR2(1024);
    data VARCHAR2(255);
    my_scheme VARCHAR2(256);
    my_realm VARCHAR2(256);
    my_proxy BOOLEAN;
    cookies UTL_HTTP.COOKIE_TABLE;
    secure VARCHAR2(1);
    BEGIN
    -- When going through a firewall, pass requests through this host.
    -- Specify sites inside the firewall that don't need the proxy host.
    -- UTL_HTTP.SET_PROXY('proxy.example.com', 'corp.example.com');
    -- Ask UTL_HTTP not to raise an exception for 4xx and 5xx status codes,
    -- rather than just returning the text of the error page.
    UTL_HTTP.SET_RESPONSE_ERROR_CHECK(FALSE);
    -- Begin retrieving this Web page.
    req := UTL_HTTP.BEGIN_REQUEST(url);
    -- Identify yourself.
    -- Some sites serve special pages for particular browsers.
    UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
    -- Specify user ID and password for pages that require them.
    IF (username IS NOT NULL) THEN
    UTL_HTTP.SET_AUTHENTICATION(req, username, password, 'Basic', false);
    END IF;
    -- Start receiving the HTML text.
    resp := UTL_HTTP.GET_RESPONSE(req);
    -- Show status codes and reason phrase of response.
    DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || resp.status_code);
    DBMS_OUTPUT.PUT_LINE
    ('HTTP response reason phrase: ' || resp.reason_phrase);
    -- Look for client-side error and report it.
    IF (resp.status_code >= 400) AND (resp.status_code <= 499) THEN
    -- Detect whether page is password protected
    -- and you didn't supply the right authorization.
    IF (resp.status_code = UTL_HTTP.HTTP_UNAUTHORIZED) THEN
    UTL_HTTP.GET_AUTHENTICATION(resp, my_scheme, my_realm, my_proxy);
    IF (my_proxy) THEN
    DBMS_OUTPUT.PUT_LINE('Web proxy server is protected.');
    DBMS_OUTPUT.PUT('Please supply the required ' || my_scheme ||
    ' authentication username/password for realm ' || my_realm ||
    ' for the proxy server.');
    ELSE
    DBMS_OUTPUT.PUT_LINE('Please supplied the required ' || my_scheme ||
    ' authentication username/password for realm ' || my_realm ||
    ' for the Web page.');
    DBMS_OUTPUT.PUT_LINE('Web page ' || url || ' is protected.');
    END IF;
    ELSE
    DBMS_OUTPUT.PUT_LINE('Check the URL.');
    END IF;
    -- UTL_HTTP.END_RESPONSE(resp);
    -- RETURN;
    -- Look for server-side error and report it.
    ELSIF (resp.status_code >= 500) AND (resp.status_code <= 599) THEN
    DBMS_OUTPUT.PUT_LINE('Check if the Web site is up.');
    UTL_HTTP.END_RESPONSE(resp);
    RETURN;
    END IF;
    -- HTTP header lines contain information about cookies, character sets,
    -- and other data that client and server can use to customize each
    -- session.
    FOR i IN 1..UTL_HTTP.GET_HEADER_COUNT(resp) LOOP
    UTL_HTTP.GET_HEADER(resp, i, name, value);
    DBMS_OUTPUT.PUT_LINE(name || ': ' || value);
    END LOOP;
    -- Read lines until none are left and an exception is raised.
    --LOOP
    -- UTL_HTTP.READ_LINE(resp, value);
    -- DBMS_OUTPUT.PUT_LINE(value);
    --END LOOP;
    UTL_HTTP.GET_COOKIES(cookies);
    dbms_output.put_line('======================================');
    FOR i in 1..cookies.count LOOP
    IF (cookies(i).secure) THEN
    secure := 'Y';
    ELSE
    secure := 'N';
    END IF;
    -- INSERT INTO my_cookies
    -- VALUES (my_session_id, cookies(i).name, cookies(i).value,
    -- cookies(i).domain,
    -- cookies(i).expire, cookies(i).path, secure, cookies(i).version);
    dbms_output.put_line('site:'||url);
    dbms_output.put_line('cookies:');
    dbms_output.put_line('name:'||cookies(i).name);
    dbms_output.put_line('value:'||cookies(i).value);
    dbms_output.put_line('domain:'||cookies(i).domain);
    dbms_output.put_line('expire:'||cookies(i).expire);
    dbms_output.put_line('path:'||cookies(i).path);
    dbms_output.put_line('secure:'||secure);
    dbms_output.put_line('version:'||cookies(i).version);
    END LOOP;
    UTL_HTTP.END_RESPONSE(resp);
    EXCEPTION
    WHEN UTL_HTTP.END_OF_BODY THEN
    UTL_HTTP.END_RESPONSE(resp);
    END;
    /

    I use oracle database enterprise edtion 10.2.0.3. I have already figured out the epg on 10.2.0.3 to support apex 3.2.
    And as I described above, the apex site works fine for ip address , and localhost. but the cookie will be blocked by IE6, if I want to access the site by 'http://computername:port/apex/apex_admin'. This problem does not occured in firefox and google browser. Could someone give me answer?

  • A quick question about WebDynpro SLD and R/3 with concurrent users

    Hello ,
    I have a very quick question about Webdynpros and SLD connecting to an R/3 system, when you configure a webdynpro to connect to an R/3 system using SLD, you configure a user name and password from the R/3  for the SLD to use. What I would like to know is when I have concurrent users of my webdynpro, how can I know what one user did in R/3 and what another user did? Is there a way for the users of the web dynpro to use their R/3 credentials so SLD can access the R/3? Like dynamically configuring the SLD for each user?
    - I would like to avoid leaving their their passwords open in the code ( configuring two variable to get the users username and password and use these variables as JCO username and password )
    Thanks Ubergeeks,
    Guy

    Hi Guy
    You will have to use Single Sign On to achieve this. In the destination you have defined to connect to R/3 , there is an option to 'useSSO' instead of userid and password. This will ensure that calls to R/3 will be with the userid that has logged into WAS. You wont need to pass any passwords because  a login ticket is generated from WAS and passed on to R/3. The userid is derived from this ticket.
    For this to happen you will have to maintain a trust relation ship between R/3 and your WAS ,there is detailed documentation of this in help files. Configuration is very straight forward and is easy to perform
    Regards
    Pran

Maybe you are looking for

  • Trouble upgrading to gtk2-2.6.0

    Hallo, i had just upgraded libglade and gtk2, during the installation i've had this error: Targets: gtk2-2.6.0-1 Total Package Size: 6.7 MB Proceed with upgrade? [Y/n] checking package integrity... done. loading package data... done. checking for fil

  • Mountain lion finder window white patches

    This is difficult to describe, I'll try and do a screen grab next time it happens, but simply, occasionally, when I wake up my iMac there are big areas of random white patches on the desktop ... it's totally corrupt and I have to bring up the 'Force

  • Internet Disconnects when I try to downloand iTunes

    I need to update my iTunes version, and when I click on download, the first box pops up asking "Run" or "Save," and before I can even click on anything, I am completely disconnected from the Internet. This seems to happen with random sites -- some I

  • Cache-flush VM-related performance issue

    Dear forum, I've got a peculiar performance issue going on with the BDB pagecache being flushed to disk. I've managed to reproduce the issue perfectly on three out of three quite different systems that I've tried on, so it is at least quite well-defi

  • Video length iPhone 4

    I have been trying to find out what the maximum video length shot by the camera will be on the iPhone 4 without any success. I have also had no success in finding out the maximum video length for video on the 3GS too. I was wondering if anyone knows