Beginners Questions about Multiple JPanels in JFrame and event handling

I am a newbie with SWING, and even a newerbie in Event Handling. So here goes.
I am writing a maze program. I am placing a maze JPanel (MazePanel) at the center of a JFrame, and a JPanel of buttons (ButtonPanel) on the SOUTH pane. I want the buttons to be able to re-randomize the maze, solve the maze, and also ouput statistics (for percolation theory purposes). I have the backbone all done already, I am just creating the GUI now. I am just figuring out EventHandlers and such through the tutorials, but I have a question. I am adding an ActionListener to the buttons which are on the ButtonPanel which are on JFrame (SOUTH) Panel. But who do I make the ActionListener--Basically the one doing the work when the button is pressed. Do I make the JFrame the ActionListener or the MazePanel the ActionListener. I need something which has access to the maze data (the backbone), and which can call the Maze.randomize() function. I'm trying to make a good design and not just slop too.
Also I was wondering if I do this
JButton.addActionListener(MazePanel), and lets say public MazePanel implments ActionListenerdoesn't adding this whole big object to another object (namely the button actionlistener) seem really inefficient? And how does something that is nested in a JPanel on JFrame x get information from something nested in another JPanel on a JFrame x.
Basically how is the Buttons going to talk to the maze when the maze is so far away?

I'm not an expert, but here's what I'd do....
You already have your business logic (the Maze classes), you said. I'm assuming you have some kind of public interface to this business logic. I would create a new class like "MazeGui" that extends JFrame, and then create the GUI using this class. Add buttons and panels as needed to get it to look the way you want. Then for each button that does a specific thing, add an anonymous ActionListener class to it and put whatever code you need inside the ActionListener that accesses the business logic classes and does what it needs to.
This is the idea, though my code is totally unchecked and won't compile:
import deadseasquirrels.mazestuff.*;
public class MazeGui extends JFrame {
  JPanel buttonPanel = new JPanel();
  JPanel mazePanel = new JPanel();
  JButton randomizeB = new JButton();
  JButton solveB = new JButton();
  JButton statsB = new JButton();
  // create instanc(es) of your Maze business logic class(es)
  myMaze = new MazeClass();
  // add the components to the MazeGui content pane
  Component cp = getContentPane();
  cp.add(); // this doesn't do anything, but in your code you'd add
            // all of your components to the MazeGui's contentpane
  randomizeB.addActionListener(new ActionListener {
    void actionPerformed() {
      Maze newMaze = myMaze.getRandomMazeLayout();
      mazePanel.setContents(newMaze); // this is not a real method!
                                      // it's just to give you the idea
                                      // of how to manipulate the JPanel
                                      // representing your Maze diagram,
                                      // you will probably be changing a
                                      // subcomponent of the JPanel
  solveB.addActionListener(new ActionListener {
    void actionPerformed() {
      Solution mySolution = myMaze.getSolution();
      mazePanel.setContents(mySolution); // again, this is not a real
                                         // method but it shows you how
                                         // the ActionListener can
                                         // access your GUI
  // repeat with any other buttons you need
  public static void main(String[] args) {
    MazeGui mg = new MazeGui();
    mg.setVisible(true);
    // etc...
}

Similar Messages

  • Here's a very basic question about 2 TB external drives and Time Machine.

    Here's a very basic question about 2 TB external drives and Time Machine.
    Ihave a Mac Pro with a .75 TB and 1 TB drive.  It also has a 1 TB 2ndinternal drive.  My current external drive is too small so I'll begetting a 1.5 TB or 2 TB drive.
    Obviouslythe new larger 2 TB drive will backup everything on the Mac Prointernal drive with Time Machine.  But there will be 1 TB of space leftover going to waste.
    ShouldI partition the external drive so that the TM portion will be 1 TB andthe use the remaining extra partition for additional file backups withCarbon Copy?
    Thanks for any insights.
    I tried searching around on the new Apple discussion forum, but I find it much harder to use than the old forum I used to use.

    The problem with terabyte drives is that that a 3 TB is about as big as you can get without going into RAID territory. Ideally, a Time Machine drive should be 3 times as large as all the drives you are backing up. So, if you have 2.75 TB of internal storage, you should have 8 TB of Time Machine space.
    Of course, that is "should". If your TB drives are mostly empty, then you can get away with something 3 times the size of your used disk space. Just remember that you are pushing it. Linc is right about Time Machine needing space to work.
    It is unlikely that you have regular churn on 2.75 TB of disk. I suggest identifying which drives and folders have the most activity and excluding those drives and directories that don't change much. It would be better to archive the data that doesn't change often and keep it out of Time Machine. Then you may be able to get away with a 2 TB Time Machine drive.

  • Question about 2 TB external drives and Time Machine.

    Here's a very basic question about 2 TB external drives and Time Machine.
    I have a Mac Pro with a .75 TB and 1 TB drive.  It also has a 1 TB 2nd internal drive.  My current external drive is too small so I'll be getting a 1.5 TB or 2 TB drive.
    Obviously the new larger 2 TB drive will backup everything on the Mac Pro internal drive with Time Machine.  But there will be 1 TB of space left over going to waste.
    Should I partition the external drive so that the TM portion will be 1 TB and the use the remaining extra partition for additional file backups with Carbon Copy?
    Thanks for any insights.
    I tried searching around on the new Apple discussion forum, but I find it much harder to use than the old forum I used to use.

    John,
    I'm not sure why you posted in the iMac forum so I'm going to attempt to get you to the correct spot. I would recommend reposting in the Time Machine Forum, this is part of the OS X forums (Leopard or Snow Leopard) because you are using Snow Leopard (your profile indicates you are) please click Apple Support Communities and type Snow Leopard. Then you can narrow the search down by clicking Refine this List.
    Roger

  • Question about multiple audio tracks

    Hello,
    I see that imovie has only 2 audio tracks available when creating a movie. I need more than two since I will be working with a voiceover track, a soundtrack and at least one background/environment track all at one time. I won't be able to use the sound recorded with the video so that "track" is not an option.
    My question is; Am I out of luck here and need to spend the 1K for studio pro to add more multiple audio tracks?
    Also, I tried working with garageband but since all of my audio tracks import in at a minimum of 40 beats per minute, the voiceovers are all sped up and sound chipmunky.
    Thanks for any help!

    Well I didn't mean to irritate you...LOL And yes, I realize that this is the iM 6 forum but the gist of my question was related to multiple audio tracks in iM and thought I would ask about it in the forum pertaining to the latest release.
    I had already posted a question in the GB forum regarding the bpm problem and found no answers so I was pretty much about to shelve that idea and forgo the whole garageband thing; this without knowing about the new "swap" features. I just updated to iM 6 yesterday.
    As far as the "on-tape" raw audios: I was working on my movie in iM4. I wanted to add more audio bits but I don't have a proper mic for my G5 so I recorded the audio bits on dv8 tape through my camcorder. I imported the video (the image was the inside of my lens cap!), extracted the audio, took those audio files and imported them into GarageBand. That's when I noticed the bpm problem.
    I'm sorry about the lack of info I originally gave but like I said, I had pretty much gave up on the idea of using GarageBand. I'm pretty new at this and I'm trying to decide what I need in terms of software to get what I want out of my movie. I'd be willing to pay for FCxp but still looking into whether I need to do just that or whether I can get by by using imovie and now it looks like GarageBand too.
    ah, thanks for that
    what irritates me, Prince wrote:
    The audio tracks were voiceovers that came from my
    dv8tape, imported into imovie4.
    ... ehm, but this is the iM 6(six) section, as said,
    iM 6 allows now "swapping" files with GB3... (I'm way
    back in the 90ies.... see my specs... )
    so, video is in some iM, and he wants to use the
    actual "on-tape" raw audios...
    I thnik we need a little more detail...

  • I bought a Canon 8400F scanner- question about multiple photos being scanne

    Hi,
    I have a question about about scanning photos. It was posted that if you scan something with multiple photos, it will separate the pictures.
    If I put 6 pictures on the scanner, will it automatically scan them and separate them, or is there something in the software where I select it to separate each picture.
    Thank you

    I'm not at my Mac right now but it should be real obvious in the CanoScan software. Open it up and play around. It will jump out at you.
    You don't tell it to select "each" picture. You merely tell it that there are multiple pictures and it then does everything automatically.

  • Some questions about the integration between BIEE and EBS

    Hi, dear,
    I'm a new bie of BIEE. In these days, have a look about BIEE architecture and the BIEE components. In the next project, there are some work about BIEE development based on EBS application. I have some questions about the integration :
    1) generally, is the BIEE database and application server decentralized with EBS database and application? Both BIEE 10g and 11g version can be integrated with EBS R12?
    2) In BIEE administrator tool, the first step is to create physical tables. if the source appliation is EBS, is it still needed to create the physical tables?
    3) if the physical tables creation is needed, how to complete the data transfer from the EBS source tables to BIEE physical tables? which ETL tool is prefer for most developers? warehouse builder or Oracle Data Integration?
    4) During data transfer phase, if there are many many large volume data needs to transfer, how to keep the completeness? for example, it needs to transfer 1 million rows from source database to BIEE physical tables, when 50%is completed, the users try to open the BIEE report, can they see the new 50% data on the reports? is there some transaction control in ETL phase?
    could anyone give some guide for me? I'm very appreciated if you can also give any other information.
    Thanks in advance.

    1) generally, is the BIEE database and application server decentralized with EBS database and application? Both BIEE 10g and 11g version can be integrated with EBS R12?You, shud consider OBI Application here which uses OBIEE as a reporting tool with different pre-built modules. Both 10g & 11g comes with different versions of BI apps which supports sources like Siebel CRM, EBS, Peoplesoft, JD Edwards etc..
    2) In BIEE administrator tool, the first step is to create physical tables. if the source appliation is EBS, is it still needed to create the physical tables?Its independent of any soure. This is OBIEE modeling to create RPD with all the layers. If you build it from scratch then you will require to create all the layers else if BI Apps is used then you will get pre-built RPD along with other pre-built components.
    3) if the physical tables creation is needed, how to complete the data transfer from the EBS source tables to BIEE physical tables? which ETL tool is prefer for most developers? warehouse builder or Oracle Data Integration?BI apps comes with pre-built ETL mapping to use with the tools majorly with Informatica. Only BI Apps 7.9.5.2 comes with ODI but oracle has plans to have only ODI for any further releases.
    4) During data transfer phase, if there are many many large volume data needs to transfer, how to keep the completeness? for example, it needs to transfer 1 million rows from source database to BIEE physical tables, when 50%is completed, the users try to open the BIEE report, can they see the new 50% data on the reports? is there some transaction control in ETL phase?User will still see old data because its good to turn on Cache and purge it after every load.
    Refer..http://www.oracle.com/us/solutions/ent-performance-bi/bi-applications-066544.html
    and many more docs on google
    Hope this helps

  • Question about multiple ipods on one computer

    I set up my own ipod nano on my computer and I have been using it without problems for some time. Now someone else in my family got the same ipod nano. I do not know how to set up this new ipod. Do i use the same software already on my computer? Do i just register this new ipod? Please help. Thank you

    Hello!
    Let me explain this in detail for you:
    The Do Not Disconnect screen
    It is normal for your iPod to say this message to you when you connect it to your computer.
    When you need to disconnect it from your computer, you'll first need to eject it.
    There are a few ways to eject your iPod; through iTunes, the Safely Remove Hardware program, and "My Computer".
    Through iTunes
    Ejecting your iPod via iTunes depends on what setting your iPod is on for.
    Connect your iPod. Go into Edit> preferences> iPod. See what setting your iPod is on; "automatic" or "manual".
    Automatic
    If you aren't restoring, or updating your iPod, iTunes should automatically eject your iPod from iTunes. If it doesn't, then right-click the name of your iPod in iTunes, and make sure that the "enable for disk use" is un-checked.
    Manual
    If you need to eject your iPod from iTunes if the setting is "manual", click the little arrow that's next to the name of your iPod in the left source list in iTunes.
    Through the "Safely Remove Hardware" program
    Look at the bottom-right corner of your screen, and there's the system tray icons there. If the "Safely Remove Hardware" icon is there, click on it, select your iPod, and click "stop".
    Through "My Computer"
    Go to "My Computer".
    Find your iPod's listing there (it's typically "E:" or "F:").
    Right-click it, click on "eject".
    For additional information about ejecting your iPod, check this Apple Support articles about it.
    Safely disconnecting your iPod
    About the "Do Not Disconnect" and "OK to Disconnect" screens on iPod
    Any more questions? I'll be glad to try to help you again.
    ~~Kylene

  • Questions about CIN tax procedure choice and pricing schemas

    Hi all,
    I have to implement SAP on a Indian company and I'm verifying all particularity about this country (in particular tax procedures and the great number of differents tax conditions used).
    I have two questions about tax procedures and pricing schemas. Every feedback about thse points will be appreciated.
    a) To choose tax procedure TAXINN or TAXINJ which are the elements that I have to consider?
         I have read lot of documentation about CIN implementation and Iu2019m oriented to choose TAXINN schema, but If possible I  would  to understand better which are on behalf of one choice or another.
    b) To define pricing schemas for India, after check with local users and using examples of documents (in particular tax invoice) actually produced, I have understood that taxes have to be applied on amount defined starting from price list, minus discounts recognized to customer plus surcharges eventually to bill (packing, transport,  etc.).
    Itu2019s correct for any type of taxes that tax amount is calculated on u201Cnet valueu201D defined at item level or there are exceptions to this rule?
    Thanks in advance
    Gianpaolo

    hi,
    this is to inform you that,
    a) About point 1 I know the difference between the 2 tax procedures (conditions or formulas). I also have read in others post in the FORUM that TAXINN is preferable. So I would to understand which are the advantages to choose instead TAXINJ. There are particular reasons or it'a only an alternative customizing setting?
    a.a. for give for posting the link : plese give me the advantages of TAXINJ and TAXINN
    CIN - TAXINN and TAXINJ
    b) About point 2, to define which value has to be used as base amount to calculate taxes isn't a choice, but is defined depending by fiscal requirement of the country, in this case India fiscal requirement. I know that, as Lakshmipathi
    write as answer on my question, exception could be, but it was important for me to understand if I have understood correctly the sequence of the pricing condition in the schema in "normal" situation.
    b.b. you can create your own pricing procedure for this and go ahead.
    hope this clears your issue.
    balajia

  • Question about the notification center (Mails and Reminders)

    Hello together,
    I just started using Mountain Lion and now I have some few questions about the notification center.
    1. Is it possible to show all reminds in the notification center? I have a lot of reminds without an date / time and they don't appear in the notification center.
    2. Is it possible to show the last five Mails in the notification center? I'm just seeing new incoming mails, but I would prefer it, if I could see the last five mails
         (no matter if readed or unreaded).
    Thank you very much for you help.
    Ratte1988       
    Hallo zusammen,
    ich habe gerade damit begonnen Mountain Lion zu verweden und habe einige Fragen zur Mitteilungszentrale.
    1. Ist es möglich alle Erinnerungen in der Zentrale anzuzeigen? Ich habe viele Erinnerungen, die ohne Datum / Uhrzeit sind und in der Mitteilungszentrale
         daher nicht auftauchen.
    2. Ist es möglich, sich die letzten fünf Mails in der Zentrale anzeigen zu lassen? Ich sehe nur neue ungelesene Mails, würde es aber vorziehen die letzten
         fünf Mails sehen zu können (egal ob gelesen oder ungelesen.)
    Danke für eure Hilfe.
    Ratte1988

    Only reminders with dates appear in the notification center - undated ones don't. Once an email has been read, it is removed from the notification center. Apple has a feedback center where you can offer suggestions.

  • A few question about iPhone OS in CS5 and CS5 in general.

    Hi,
    I'm an IT trainer and I am trying to introduce my students to programming for iPhone/iPod Touch. (They are Secondary 2 students. 14 years old) The school is using a windows computer and CS5 right now is the best for the class (Not a steep learning curve and a user-friendly program). I know about the problems over the iPhone OS in CS5 with Apple but I was told it is still available for use. Furthermore, we have no intention of bringing the apps created to the Apple Store. I've tried the trial version and before I make any purchase, I would actually like to ask a few questions.
    Is the iPhone OS in the trial version itself complete? Is there anything left out from the trial version because when I tried it, it seems fine however I did not try publishing to an iPhone due to the certificates. Is there a reason for the certificate? Is there any way around it because if there isn't do I need to get a certificate for every single student? (I'm looking at a class of 40 students.) Is the certificate available for windows platform?
    Lets say, I got myself a certificate, create a simple program and then publish it, can I immediately bring it over to iTunes and then sync? Will it work that way? I don't want it to be too tedious for the students to see the end result. I've done quite a few research and have come across people having problems bringing it into their devices. Those people mention about bringing it to Cydia and needing to jailbreak the device. The devices made available for the students are not jailbroken. Will iPhone OS with proper certification still need Cydia for use with their device? Will only jailbroken device allow a CS5 app? I hope you get what I'm trying to say. We as trainers do not support teaching students to jailbreak, so that's definitely a no-no.
    Another thing about CS5. Previously I have called customer support about the CS4 the school is using now and the problem with nested animation when publishing the animation as a video file, is this problem still in CS5? Does CS5 allow nested animation to be published as a video file? If it isn't, is there any way around it?
    Thank you for your time and patience in answering my questions.
    Regards,
    Shafuraa

    Dear Marco,
    Thanks for th links, its quite handy. One more help required from you as its related to Idsktune. I was just reruning the idsktune on Soalris 10 box where zfs file system used, and able to see the below warning
    WARNING: largefiles option is not present on mount of /, files may be limited to 2GB in size.
    Could you tell me this alert specific to zfs file system, I was searching the mount parameter options specific to file size, but not able to get anything. Below are the system parameters.
    bash-3.00$ ulimit -a
    core file size (blocks, -c) unlimited
    data seg size (kbytes, -d) unlimited
    file size (blocks, -f) unlimited
    open files (-n) 256
    pipe size (512 bytes, -p) 10
    stack size (kbytes, -s) 8192
    cpu time (seconds, -t) unlimited
    max user processes (-u) 29995
    virtual memory (kbytes, -v) unlimited
    In UFS file system I have noted, for such largefile option we are adding the "largefile" parameter in mount, below is such an example.
    /var/crash on /dev/md/dsk/d40 read/write/setuid/devices/intr/largefiles/logging/xattr/onerror=panic/dev=1540028 on Thu Aug 19 14:54:11 2010
    Could you guide me on this file size warning specific to zfs file system.
    Many thanks in advance for your support,

  • Some questions about javacard 2.1.1 and smartcardio

    Hello i have some question about java card 2.1.1 and the smartcardio package.
    1.) I want to sign a message with the Signature.ALG_RSA_SHA_PKCS1 algorithm. I use the following code in the applet to sign the message:
    final static byte P1_CREATION_MODE = (byte) 0x01;
    final static byte INS_SIGN_MODE = (byte) 0x60;
    final static byte SmartCard_CLA = (byte) 0xB0;
    private void signMessage(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            byte byteRead = (byte) (apdu.setIncomingAndReceive());
            signature.init(privateKey, Signature.MODE_SIGN);
            short length = signature.sign(buffer, ISO7816.OFFSET_CDATA, byteRead, buffer, (short) 0);
            apdu.setOutgoingLength((short) length);
            apdu.sendBytesLong(buffer, (short) ISO7816.OFFSET_CDATA, (short) length);
            apdu.setOutgoing();
        }On the host side I use the following code to connect to the card and to send the sign apdu:
    if (TerminalFactory.getDefault().terminals().list().size() == 0) {
                LOGGER.log(Level.SEVERE, "No reader present");
                throw new NoSuchCardReader();
            /* Select the first terminal*/
            CardTerminal terminal = TerminalFactory.getDefault().terminals().list().get(0);
            /* Is a card present? */
            if (!terminal.isCardPresent()) {
                LOGGER.log(Level.SEVERE, "No Card present!");
                throw new NoSuchCard();
            /* Set the card protocol */
         Card card = terminal.connect("*");
            ATR atr = card.getATR();
            LOGGER.fine(getHexString(atr.getBytes()));
            LOGGER.fine(getHexString(atr.getHistoricalBytes()));
            CardChannel channel = card.getBasicChannel();
            CommandAPDU cmd = new CommandAPDU((byte) 0xb0, (byte) 0x60, (byte) 0x01, (byte) 0x00, new String("datadatdatadata").getBytes(), (byte) 0x40);
         ResponseAPDU response = channel.transmit(cmd);
            card.disconnect(false);But this does not work and i got the following error
    javax.smartcardio.CardException: sun.security.smartcardio.PCSCException: Unknown error 0x8010002f
            at sun.security.smartcardio.ChannelImpl.doTransmit(ChannelImpl.java:202)
            at sun.security.smartcardio.ChannelImpl.transmit(ChannelImpl.java:73)
            at de.upb.client.smartmeter.SmartMeter.initSmartCardApplet(SmartMeter.java:114)
            at de.upb.client.smartmeter.SmartMeterApplikation.main(SmartMeterApplikation.java:39)
    Caused by: sun.security.smartcardio.PCSCException: Unknown error 0x8010002f
            at sun.security.smartcardio.PCSC.SCardTransmit(Native Method)
            at sun.security.smartcardio.ChannelImpl.doTransmit(ChannelImpl.java:171)
            ... 3 more2.) 3Des encryption
    I want to use the 3Des algorithm to encrypt my data. I use
    keyDES = (DESKey) KeyBuilder.buildKey(KeyBuilder.TYPE_DES,
                        KeyBuilder.LENGTH_DES3_2KEY, false);
    cipherDES = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M2, false);But i do not know what is the aquivalent on the host side??
    3.) Another problem is that i am not able to send the modulus of a public key from the host applikation to the smard card
    new CommandAPDU((byte) 0xb0, (byte) 0x20, (byte) 0x01, (byte) 0x00, modulus.toByteArray()); // create the apdu
    // the method in the applet
    private void setServerKeyMod(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            try {
                byte byteRead = (byte) (apdu.setIncomingAndReceive());
                short off = ISO7816.OFFSET_CDATA;
                // strip of any integer padding
                if (buffer[off] == 0) {
                    off++;
                    byteRead--;
                publicKeyServer.setModulus(buffer, off, byteRead);
            } catch (APDUException ex) {
                ISOException.throwIt((short) (SW_APDU_EXCEPTION + ex.getReason()));
        }The error code is 6700
    4.) My last problem ist, that i am not able to use a value bigger than 0x7F as the ne field in the apducommand, because i get the following error
    CommandAPDU((byte) 0xb0, (byte) 0x60, (byte) 0x01, (byte) 0x00, data, (byte) 0xff);
    java.lang.IllegalArgumentException: ne must not be negative
            at javax.smartcardio.CommandAPDU.<init>(CommandAPDU.java:371)
            at javax.smartcardio.CommandAPDU.<init>(CommandAPDU.java:252)I thought that it this should be possible in order to use all the bytes of the response apdu.
    If you need more code to help please let me know.
    Cheers
    Edited by: 858145 on 06.07.2011 08:23

    2) What is PKCS? what is the difference between
    PKCS#11 and PKCS#15??PKCS is the abbreviation of "Public-Key Cryptography Standards"
    PKCS #11: Cryptographic Token Interface Standard
    See http://www.rsasecurity.com/rsalabs/node.asp?id=2133
    PKCS #15: Cryptographic Token Information Format Standard
    http://www.rsasecurity.com/rsalabs/node.asp?id=2141
    If you want to use yor smartcard as secure token it doesn't have to be a JavaCard.
    BTW: I don't remember a way to access PKCS#15 tokens on a JavaCard from within an oncard JavaCard program. If you want to use keys in your oncard program, you have to transfer it onto the card or generate it oncard and export the public key by your own oncard/offcard code.
    Jan

  • Question about multiple application modules.

    Hello,
    Suppose I have 2 database schema’s. For both schemas I have 1 application module. All view objects are in the same project.
    For each application module I have an application definition.
    Is it possible to link between these two applications? Because sometimes these database schema’s link to each other and you would like to jump from one application directly to the other.
    For example you have orders locates in 1 DB schema and customers in another DB schema.
    You would want to jump from the order directly to the customer details in the second schema.
    Is this possible? Or do I need to make nested application modules etc?
    I can find very little info about this; the JHS def guide does not offer much information about multiple application modules etc.
    -Anton

    Anton,
    Yes, you can jump aroundd as you like.
    You just can't use view links between VO's based on different db schema tables.
    Nesting AM's doesn't help there, the DB connection of the top-level AM will be used.
    Why don't you create synomyms for the tables in the other schema?
    Steven Davelaar,
    JHeadstart Team.

  • Some basic questions about rmi registry  context  "bind" and "lookup"

    We have more processing to do than can be accomplished with a single computer. To solve the problem I've implemented a distributed computing solution using RMI. (The first time I saw RMI was about 2 weeks ago, so please bear with me!)
    The implementation is a proof of concept not a fully fleshed out system. I have one "Workunit Distributor" computer and any number of "Data Processor" computers all on the same lan segment. "Workunit Distributor" and "Data Processor" computers are both RMI client and server to each other. The "Data Processor" computers are given the ip address and name of the "Data Distributor" on the commandline when they start. They communicate their willingness to receive and process a workunit to the ""Workunit Distributor" via a RMI call. Work units are sent to available "DataProcessors" and results are eventually returned to the "WorkunitDistributor" (minutes or hours later). The model program works quite well, and appears to be capable of doing the processing we need to get done.
    But now that it seems viable, I've been asked to make it a little more scalable, flexible and self configuring. In particular, instead of one "Workunit Distributor", any number of "Workunit Distributors" should be allowed to show up or disappear from the lan at any time and the system should continue to function. I've worked out a good scheme for how this can be done, but I have a couple of questions about the RMI registry (registries?). I'm trying to keep from implementing some functionality that may already be available as a library or subsystem.
    With my current model design, each computer binds to its own registry with a unique name. For instance:
    CRDataProcessorImpl crdpi = new CRDataProcessorImpl(svr);
    Context crDataProcessingContext = new InitialContext();
    crDataProcessingContext.bind("rmi:"+hostName, crdpi);
    Currently the "Data Processors" get the info they need for a Context lookup() of the one and only "Workunit Distributor" from the commandline. And the info the "Workunit Distributor" needs to do a Context lookup() of a "DataProcessor" is passed to it from each "DataProcessor" via a RMI call.
    But in the newer (yet to be implemented) scheme where any and all "Workunit Distributors" show up and disappear whenever they feel like, the naming bootstrapping scheme described above won't work.
    I can imagine a few ways of solving this problem. For instance, having "Workunit Distributors" multicast their contact information on the lan and have a worker thread on each "Data Processor" keep track of the naming information that was multicast. Another alternative (more organized, but more complex) might be to have a dedicated host with a "well known" address and port that "Workunit Distributors" and "Data Processors" could all go to, to register or look up at an application level. Sort of a "domain name service" for RMI. But both these schemes look like a lot of work to implement , debug and maintain.
    The BEST thing would be if there was one plain vanilla RMI registry that was usable by all RMI enabled computers instead of having each computer have its own local name registry. In volume 2 of the Core Java2 book it says that every registry must be local. I'm only hoping there's been progress since the book was published and now a central rmi registry is available.
    If you have any ideas about this I'd like to hear what you know.
    Thanks in advance for any advice.
    Lenny Wintfeld
    ps - I don't believe web services, as full featured as it is, is a useful alternative. I'm moving 100's (in the future possibly 1000's) of megabytes back an forth for processing.

    The local bind/rebind/unbind restriction is still there and it will always be there.
    I would look at
    (a) RMI/IIOP, where you use COSNaming as a registry, which doesn't have that registriction, and which also has location-independent object identifiers
    (b) Jini.

  • A question about CREATE PUBLIC DATABASE LINK and ORA-12154 error

    Dear all,
    I have a problem about public database link creation and I would appreciate if you could kindly give me a hand. I have the following connection parameters in my
    tnsnames.ora file:
    DGPAPROD.WORLD =
         (DESCRIPTION =
           (ADDRESS_LIST =
            (ADDRESS = (COMMUNITY=tcp.world)
              (PROTOCOL=TCP)(HOST=ORASR001)(PORT=1521)
           (CONNECT_DATA = (SID = DGPAPROD))
    ...Having the above mentioned parameters I can connect to this remote database directly in a SQL*Plus shell:
    $ sqlplus username/[email protected] works pretty well and the connection is established without any problem.
    Now, what I would like to do is to create a public database link to this remote database in order to avoid the user/connection switching for viewing the
    content of this database. I proceeded according to the syntax indicated in the Oracle online documentation:
    http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_5005.htm#SQLRF01205
    Therefore I run the following in order to create a public database link
    CREATE PUBLIC DATABASE LINK SR001_dblink CONNECT TO user IDENTIFIED BY password USING 'DGPAPROD.WORLD';Apparently there is no error and the link is created successfully. However it cannot resolve the remote host and whenever I run the following query
    (myenterprise is the name of a table in that remote database)
    SELECT *
    FROM myenterprise@SR001_dblink
    ERROR at line 1:
    ORA-12154: TNS:could not resolve the connect identifier specifiedWhat causes this problem?
    Thanks in advance,
    Kind Regards,
    Dariyoosh

    spajdy wrote:
    You must have defined DGPAPROD.WORLD in tnsnames.oar on server where you DB is runnig.Hello there,
    Thanks a lot for this nice solution. In fact I had to add the connection parameters into the tnsnames.ora file of the server on which the link was created (not the tnsnames.ora of my oracle client stored on the localhost)
    After a bit googling I found another solution that allows to create the database link:
    CREATE PUBLIC DATABASE LINK SR001_dblink CONNECT TO user IDENTIFIED BY password USING '(DESCRIPTION =  (ADDRESS_LIST =  (ADDRESS = (COMMUNITY=tcp.world)
    (PROTOCOL=TCP)(HOST=ip_adresse)(PORT=1521)))(CONNECT_DATA = (SID = GPAPROD)))';Thanks a lot for your help!
    Kind Regards,
    Dariyoosh
    Edited by: dariyoosh on 18 nov. 2009 07:15

  • Question about throws exception in interface and realized class

    Hi,all
    If I define a method In the interface like that-
    public void Execute() throws NumberFormatException; In the realized class, I can define this method like that-
    public void Execute() throws RuntimeException{
            System.out.println("test");       
    }This is a right realization. But if I manage it to throws Exception or to throws Throwable in the class it leads a error. Why add this restrict only to Exception? What is the purpose of this way?
    Greetings and thanks,
    Jason

    When you say "throws NumberFormatException" you are really saying:
    When using classes implementing this interface, you have to be prepared to deal with them throwing a NumberFormatException. Other exceptions won't happen.
    When you come to implement it, it might not be possible for it to throw a NumberFormatException, so there's no reason why you should have to lie about that. Code handling it directly will be fine (it doesn't throw a NFE) and code handling it via the interface will be fine (it will handle NFEs, they just don't happen).
    If your concrete implementation throws other sorts of exception, such as Exception or IOException, and so on, it's incompatible with code that's manipulating the interface. The interface says "NFEs might get thrown, nothing else will." while your implementation says "IOExceptions might get thrown".
    So that explains why you can't use arbitrary exceptions. The special case is RuntimeException. RuntimeExceptions don't have to be caught, and it's expected that they can happen at any time - so there's no point trying to catch and handle them as a general case.
    The classic example of a RuntimeException is a NullPointerException. You don't need to declare your method as throwing a NullPointerException even though it might get thrown. And you don't have to add NullPointerException to the throws part of the interface definition, because you already know that the concrete implementation could throw a NPE at any time.
    Hope that helps (a little).
    I'd recommend reading the API documentation on RuntimeException and Exception to get a clearer insight into this.
    Dave.

Maybe you are looking for

  • A simple one: Save function does not work when a client is trying to save a form on his desktop i cr

    Hi, i have created a simple form in live cycle designer with just some fields the cleint can enter infomartion into. when ever they then open the PDf to fill in the fields, they can never save it, it seems to be the case everytime i make a form in li

  • Why do I get Spaces when I add a new line?

    Finally broke down and have retired HomeSite+.  Not sure that is a good idea though... A few things are bugging me about ColdFusion Builder 2 such as: I have auto indent turned on for tabs only and a tab is set to 3 spaces wide. I have done this in e

  • POP UP window resize in web dynpro ABAP

    Hi All, I have created a pop up window by using method create_window of interface  if_wd_window . The pop up window is Resizable by default . If user Resizes the pop up window , Screen is uncooperative . As a solution we decided not to allow Resizabl

  • Can pages read a word 97 document?

    I have a word 97 file on my flash drive.   If I buy pages, will it be able to read it and print it out?

  • Can't login this one secure site

    I'm unable to login on this one secure site .Ican now get to the site but it always stop short of allowing me to login ,is it possible for a virus to attack one site my computer is having know other problem with the exeption of this one site