Sniffer implementation

Based on the background information available from the forums, I have been able to understand that as Java does not have access to raw sockets, a packet sniffer cannot be implemented in Java alone. I would need some feedback on the following functionality for a project that I have been assigned to work on,
"For testing purposes, we need to create a version of the SMTP Interceptor that acts as a SMTP packet sniffer. This will allow us to create a non-intrusive agent on a network that, provided it is on the correct sub-net, should capture a copy of all SMTP network traffic without acting as a failure-point in the SMTP relay network."
I have looked around on the internet and found that there is an interface library Jpcap written in Java that can abstract over raw implementations for Windows/Linux. Our target test platform at the moment is Solaris, has anyone used the library for a similar project..any pointers to what approach would suit the requirements the best?
I do not have a great background in networking, could someone provide some feedback/point to resources on introduction to SMTP packets vis-a-vis their differences from normal HTTP packets etc.?
Thanks

Just like someone who would pride himself in being
named after evil, he crossposted this like a lazy
butthead.
http://forum.java.sun.com/thread.jspa?threadID=709313
Apologies about the cross-post. As an aside, at least I have a better reason to pride myself on albeit be judgemental on good/evil/lazy/butthead amongst other things.

Similar Messages

  • Implementing a rs232 sniffer using labview

    Hello,
    i want to create some kind of RS232 sniffer inside my LabView application to see the communication between the app itself and the device.
    I know there are third party apps like binterm doing this job, but it would be great for me to include this function direclty into my labview program.
    any idea how to start / begin that function ?
    best regards

    This is a screen shot of the VIs listed in Example Finder
    You will need to know your serial transmission parameters such as baud rate, data bits, start bit, stop bits and parity. This is done using VISA Configure serial port. Watch out for the termination character truncating any data you send of receive. The termination character can be ignored if required.
    Ben's hint is to say that NI Spy could be used to monitor any serial comms made over the NI API. Thanks Ben hadn't thought of that.
    What version of labview are you using?
    David
    Message Edited by David Crawford on 09-13-2006 02:33 PM
    Attachments:
    Serial VIs list in Example Finder.jpg ‏106 KB

  • How to implement an app in a bridge to grab input stream from the Internet

    I set up a pc as a linux-based (Red Hat 9.0) bridge device at first. The pc got two NICs, both of their IPs set as 0.0.0.0. Just now, whole the LAN can uses the pc as a transparent bridge to communicate with external network without change any network setting.
    Consider to monitor the data stream between LAN and external network. I try to implement a sniffer-like app in the bridge device now.
    Below is a portion of my sniffer app, as I run the app in the bridge device, the outcoming result will be:
    print test line 01
    not my expected result:
    print test line 01
    print test line 02
    Can anyone help me to clear my idea?
    public grabInputStream()
         String t = "";
         int listenPort = 80;
         try
              ServerSocket serverSocket = new ServerSocket(listenPort);
              System.out.println("print test line 01");
              Socket listenSocket = serverSocket.accept();
              System.out.println("print test line 02");
              InputSream listenInputStream = listenSocket.getInputStream();
              while (listenInputStream.available()>0)
                   t+=(char)listenInputStream.read();
         catch (Exception e)
              e.printStackTrace();
    }

    Using available() is a bad way to check if the stream is still open.
    Reread the documenation on available to see while.
    Just read only byte at a time until the stream ends. See the javadoc on read() to see how.
    Note: a byte is not a char and a single char can take up 2 or 3 bytes.
    Using a String like this is both inefficient and incorrect.
    I suggest you use apache's IOUtils class to convert an InputStream into a String.

  • Ethernet sniffer with FPGA

    Does anyone have code to receive Ethernet trames with FPGA decoder?  (like the code on DevZone which includes code for reading and writing RS-232 data.) I would like to build a fast Ethernet sniffer and data decoder Any FPGA code or idea would be appreciated.
    Thank  
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

    L.D.MESU73 wrote:
    Does anyone have code to receive Ethernet trames with FPGA decoder?  (like the code on DevZone which includes code for reading and writing RS-232 data.) I would like to build a fast Ethernet sniffer and data decoder Any FPGA code or idea would be appreciated.
    Thank  
    Excellent learning project! * 
    Please clarify.
    Sniff the traffic of the ethernet port or use I/O lines to monitor packets?
    Ethernet port will only be possible if you can access the driver level of the ethernet port and use Promicuous mode to capture the recieved frames. You will really need NI cooperation if you want this.
    Port I/O will actually be easier I would think... if FPGA was fast enough... maybe for 10-based-T ... what is the top end sample time on FPGA ... today?
    Ben
    * Back in about 1988, Robert J Schmalstieg (formally with DEC, acquired by Compaq and now with HP Network Support) wrote in VAX-Macro an application that ran on a VAX and would do what an LAN-Analyzer would do. He really wanted this functionality since there were only about (3) LAN-Analyzers available for the East Coast (Networks were so new that analyzers were very pricey!) So he found a hook into the driver for the network adapter that would put the adapter in promiscuous mode. Promiscuous mode would bypass the address and protocol checks normally performed by the hardware to toss or re-direct recieved frames.
    We teamed up and started meeting on Thursday nights (we had to meet in person since there was no net avaiable for hob-knobbing) and worked as team to develop a multi-threaded application along with a Kernal mode routine that would service the interupt, apply simple filter before queing the packet to the disk routine. The file writting routine monitored the packet queue (we had to write our own que of course) and wrote it to disk. "Many a case of beer and lage pizza were deveoted to the good of programming those nights I'll tel you".
    After about 4-5 months of developing in our spare time gave us the oppertunity to test the acquisition and filtering functions on a real network. We started by filtering on LAT (Local Area Transport, used to serve remote serial ports to a mainframe) and started seeing the text being typed by one of our managers. Our jaws dropped and we looked at each other when I beleive it was him (Robert Schmalstieg) that said "we could get real sneaky with this!". At that time we decided the program should be called "Sniffer.exe" and the data file would be named Olfactory.dat". THe post processing utility that would format "Olfactory.dat into "Olfactory.txt" was latter named Snicode.exe (Sniffer Decode).
    In the course of developing Sniffer I learned a lot of things, some of which I use every day (inter-thread comm using queues ) and others that are useful only for answer "out-there" questions like this one. If you use the approach of hooking into the existing ethernet post, you will learn alot about what it takes to cooperate with NI and how to use their hooks and back-doors. None of this knowledge will transport very well to other environments.
    Taking the I/O approach you are going to learn ethernet and the protocols that ride on it to a greater extent. What you will learn will apply as long as you are dealing with an ethernet device. The protocols that ride on ethernet are also implemented over other networks topologies as well.
    Another plus for the I/O approach. There is no limit of what you can do with it! The "Promiscuous Mode" approach will not let you capture corrupted packets. Packet framing is handled by the hardware and an ill formed packet is concidered a collision or coruption and is tossed (when last I looked).
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Problem in implementing "Multi-Master Replication"

    Hi,
    I am trying to implement "Multi-Master Replication", where both sites will try to act as Master, when Site1 is down the other site will take control and data will be updated at Site2 and vice-versa.
    I have created REPADMIN user at both the site.
    create user repadmin identified by repadmin;
    grant connect, resource to repadmin;
    execute dbms_repcat_admin.grant_admin_any_schema(‘repadmin');
    grant comment any table to repadmin;
    grant lock any table to repadmin;
    execute dbms_defer_sys.register_propagator(‘repadmin');
    Then I have created DBLink at both sites:
    connect repadmin/[email protected]
    create database link MYDB.WORLD
    connect to repadmin identified by repadmin
    using 'MYDB.WORLD';
    connect repadmin/[email protected]
    create private database link NAVDB.WORLD
    connect to repadmin identified by repadmin using 'NAVDB.WORLD';
    Then created schedules for Push and Perge jobs.
    -- Add jobs to NAVDB
    connect repadmin/repadmin@navdb
    begin
    dbms_defer_sys.schedule_push(
    destination => 'MYDB.WORLD',
    interval => 'SYSDATE + 1/(60*24)',
    next_date => sysdate,
    stop_on_error => FALSE,
    delay_seconds => 0,
    parallelism => 1);
    end;
    begin
    dbms_defer_sys.schedule_purge(
    next_date => sysdate,
    interval => 'sysdate + 1/24',
    delay_seconds => 0,
    rollback_segment => '');
    end;
    -- Add jobs to MYDB
    connect repadmin/repadmin@mydb
    begin
    dbms_defer_sys.schedule_push(
    destination => 'NAVDB.WORLD',
    interval => 'SYSDATE + 1/(60*24)',
    next_date => sysdate,
    stop_on_error => FALSE,
    delay_seconds => 0,
    parallelism => 1);
    end;
    begin
    dbms_defer_sys.schedule_purge(
    next_date => sysdate,
    interval => 'sysdate + 1/24',
    delay_seconds => 0,
    rollback_segment => '');
    end;
    Then created "Master Group Site" at Site1:
    connect repadmin/repadmin@navdb
    BEGIN
    DBMS_REPCAT.CREATE_MASTER_REPGROUP(
    gname => '"GROUP1"',
    qualifier => '',
    group_comment => '');
    END;
    Add desired table object for Replication:
    BEGIN
    DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
    gname => '"GROUP1"',
    type => 'TABLE',
    oname => '"AUTHOR"',
    sname => '"PUBS"');
    END;
    Set Primary Key column:
    BEGIN
    DBMS_REPCAT.SET_COLUMNS(
    sname => '"PUBS"',
    oname => '"AUTHOR"',
    column_list => '"AUTHOR_KEY"');
    END;
    Resume Master Activity at Site1:
    BEGIN
    DBMS_REPCAT.RESUME_MASTER_ACTIVITY(
    gname => '"GROUP1"');
    END;
    Add another Master Site as Site2:
    connect repadmin/repadmin@navdb
    BEGIN
    DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY(
    gname => '"GROUP1"');
    END;
    BEGIN
    DBMS_REPCAT.ADD_MASTER_DATABASE(
    gname => '"GROUP1"', master => ‘MYDB.WORLD');
    END;
    BEGIN
    DBMS_REPCAT.RESUME_MASTER_ACTIVITY(
    gname => '"GROUP1"');
    END;
    I have executed above steps as shown in attached PDF file. Now I am trying to update one row in "Author" table and it is giving error like:
    ORA-23326: object group "PUBLIC"."GROUP1" is quiesced
    As per the description given for error in some help file, I am trying to suspend the activity, then it is give me same error like:
    SQL> BEGIN
    2 DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY(
    3 gname => '"GROUP1"');
    4 END;
    5 /
    BEGIN
    ERROR at line 1:
    ORA-23326: object group "PUBLIC"."GROUP1" is quiesced
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 4195
    ORA-06512: at "SYS.DBMS_REPCAT", line 946
    ORA-06512: at line 2
    Here I am stuck up and cannot perform any DML operation on the Replicated object.
    Look into the matter and suggest something if anyone can.
    Thanks,
    Tapan Trivedi

    You're probably going to have to rethink this.
    Even if your replication agreements are not encrypted, it is likely that your userPassword attributes are hashed. If they're not, you could just ask either master for the cleartext userPassword anyways, and no need to try to sniff it out of replication traffic.

  • Which port to sniff for packets

    Hi ppl, i been tasked to write a basic packet sniffer program using Java to sniff packets off my school's student LAn for one of my subject's assignment, topic which is on network protocol analysis.
    My plan is to write several type of packet classes like TCP,IP,UDP
    then i got my own sniffer program which will sniff packets off the LAN , detect type of packet and then instantiate of the above objects and the user can then manipulate.
    The GUI and implementation is rather fundamental to me, but i am rather puzzled or loss at how can i actually sniff the packets off the LAN. Is there a specfic class in the Java API, or port number which i can specify that i can capture the packets for analysis ?
    Hope you ppl can pump in your suggestions on the capturing data info..
    thanks
    wilson

    The easiest way you could do this is by creating a socket to the computer you want to scan.
    Than use the getLocalPort() method and the getPort() method to get the values back.
    You could use this script:
    import java.net.*;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    public class portListen extends Thread {
       /* Public interface ******************************************************/
       static public void main( String argv[] ) {
          String cPortFrom;
          String cPortDesc;
          System.out.println( "\nOpening portListen.ini ...\n" );
          try {
             RandomAccessFile RAF;
             RAF = new RandomAccessFile("portListen.ini","r");
             String cIPFrom = "127.0.0.1";
             if( argv.length>0 )
                cIPFrom = argv[0];
             String cLine = "";
             cLine = RAF.readLine();
             while( cLine!=null ){
                StringTokenizer token = new StringTokenizer( cLine, "," );
                cPortFrom="";
                cPortDesc="";
                if( token.hasMoreTokens() )
                   cPortFrom = token.nextToken();
                if( token.hasMoreTokens() )
                   cPortDesc = token.nextToken();
                if( cPortFrom.length()>0 ){
                   portListen server = new portListen( cIPFrom, cPortFrom, cPortDesc );
                   server.start();
                cLine = RAF.readLine();
             RAF.close();
             System.out.println( "\nAll system ready" );
          } catch(Exception e) {
             e.printStackTrace();
             System.out.println( "\nError during opening of portListen.ini  " +e.toString() );
       private int nPortFrom;
       private String cInServer;
       private String cPortDesc;
       public portListen( String cIPFrom, String inPort, String cPDesc ){
          cInServer  = cIPFrom;
          nPortFrom  = Integer.parseInt(  inPort );
          cPortDesc  = cPDesc;
          System.out.println( "   listen [" +cInServer +":" +nPortFrom +":" +cPortDesc +"] " );
       public void run(){
          try {                                  // port, maxrequest, address
             ServerSocket sock = new ServerSocket( nPortFrom, 5, InetAddress.getByName(cInServer) );
             while( true ){
                Socket socket = sock.accept();
                //System.out.println( " User at [" +socket.getLocalPort() +":" +cPortDesc +"] retreive information" );
                System.out.println( " New user from [" +socket.getInetAddress() +":" +socket.getPort() +"] to [" +socket.getLocalAddress()  +":" +socket.getLocalPort() +":" +cPortDesc +"]" );
                socket.close();
          } catch (Throwable e) {
             e.printStackTrace();
             System.out.println( e.getMessage() );
             System.out.println( "Error in listen [" +nPortFrom +"] " );
    }I got this code from this url: http://www.baccan.it/index.php?sezione=javaportlistener&email=si
    Hope this helps you out a bit. Good luck.

  • Java Sniffer

    Based on the background information available from the forums, I have been able to understand that as Java does not have access to raw sockets, a packet sniffer cannot be implemented in Java alone. I would need some feedback on the following functionality for a project that I have been assigned to work on,
    "For testing purposes, we need to create a version of the SMTP Interceptor that acts as a SMTP packet sniffer. This will allow us to create a non-intrusive agent on a network that, provided it is on the correct sub-net, should capture a copy of all SMTP network traffic without acting as a failure-point in the SMTP relay network."
    I have looked around on the internet and found that there is an interface library Jpcap written in Java that can abstract over raw implementations for Windows/Linux. Our target test platform at the moment is Solaris, has anyone used the library for a similar project?
    I do not have a great background in networking, could someone provide some feedback/point to resources on introduction to SMTP packets vis-a-vis their differences from normal HTTP packets etc.?
    Thanks

    Yeah. Cross posting is bad.
    Normally I would answer in the other thread which is in the right forum at least but this one already has some actual content so here goes...
    As mentioned above you seem to have confusion over protocols and how they fit together. There is such a thing as an HTTP protocol and a SMTP protocol but when you say "packets" you've kind of gone off the rails. Both HTTP and SMTP sit on top of the actual networki0ng protocol TCP/IP.
    In a general way here is what you can do vs what you can't do in Java.
    You can do anything you want with a protocol that sits on top of TCP/IP. This covers HTTP, SMTP, POP, FTP, DNS, various database connections... the list goes on. What's key about all these is these protocols don't actually rely on any behaviour of TCP, packets or the stack. They just do their thing... abstracted if you will from what the OS actually sends and recieves over the network.
    What you can't do in Java is basically funky TCP stuff that requires access to the TCP stack or other protocol guts. These types of tools are things like ICMP. Basically if you want to do low level network detection, configuration, information gathering than Java is not the way to go.
    Java is also not suitable for writing firewalls or general sniffers if you want to see what is going on at the TCP level or want to block things or scan or monitor things at that level.
    So back to your question....
    As jverd impiled you can certainly run a proxy-ish tool in Java that can intercerpt and log various HTTP and SMTP messages. Basically you are writing a proxy server and logging the intervening messages. I wouldn't bother to do something like this for testing though because there are many existing logging/tracing proxy servers out there and available for free already. I can't think of any off the top of my head but I did use an HTTP proxy that showed me requests about 2 years ago so I know they exist.
    A couple of points I think that are worth keeping in mind.
    1) You can't proxy HTTPS (secure sockets HTTP). Because doing so of course busts up the idea of security and if this was possible imagine how bad things would be. This may not be a problem for you but I just thought I'd mention it.
    2) If you proxy and SMTP server I would suspect that depending on how it is set up mail may well bounce. This is because there are more and more anti-spam measures taking place all the time... many of which have to do with stopping open relays and simple checks (like reverse DNS) that will mean that your normal SMTP server would be able to send mail properly but your proxied one won't. Again this is probably as it should be but it could make things difficult for testing.
    Bottom line with both of these is that most of the testing you will be doing will I hope entirely be in your own little network where you can get around these difficulties.
    As far as protocols... HTTP and SMTP are both text based and dead simple really . If you want to learn them do a search on google for them with RFC. This will lead you to some very lengthy and incredibly boring documents but all the specs are in them. Once upon a time I learned the makeup of both proctols from them so I know it can be done...
    for awhile I was sending email by telneting into SMTP servers directly but that's a sad story in a way I suppose but I do offer it as proof that really it isn't that tricky.
    Good luck to you.

  • Projeto de Implementação Nota Fiscal Eletrônica de Serviços NFS-e

    Prezados,
    Alguém possui informações se há algum projeto ativo na SAP ou planos de projeto para implementação da nota fiscal de serviços eletrônica via web services?
    Caso negativo alguém está trabalhando em uma iniciativa própria?
    Atenciosamente,
    Fabio Purcino

    Fabio,
    SAP disponibiliza a NF-e serviços sómente para a cidade de São Paulo. Por favor, verifique a nota 981687 e os pre-requisitos que estão descrito nesta nota.
    Atenciosamente,
    Paulo

  • I want to implement thems functionality in  my swing application

    Hi All...
    I want to implement the themes object in my swing application,How ,where to start and move that functionality,If anybody use this functionality in your program experience can u share with me.
    Than to Advance
    ARjun...

    Hi Kuldeep Chitrakar
    I can do that in web intelligence. dont want that
    I am replicating some of the sample report of SQL Servers in BusinessObjects XI R3.1.
    One of the SQL Sever's report is of product catalogue type that gives complete information like name, category, description along with the products image etc... for each of the products.
    I am trying to replicate the above said SQL Server report in Business objects XI R3.1. I am facing problem in bringing the image in to my BO report. The image resides in a table and its datatype is of varbinary(max). I don't know the exact matching while creating an object in the uiverse designer.
    Here is the url link http://errorsbusinessobjectsxir3.blogspot.com/2010/10/business-objects-image-errors.html
    Regards
    Prasad

  • Training and Event Management Implementation based on competencies

    Dear Friends,
    My client is going ahead for Training and Event Managment Implementation. They have a basic requirement to start with and that is :
    1) They have done competency mapping for all its employees and they want that the competencies of each employees(along with the skill levels) to be recorded in the system and that has to be the starting point of using Training and Event Management module.
    2) They want, if the competencies can flow based on Job/ Position.
    3) Some identifier to the competencies, whther it has flowed from Appraisal or any other sources in the Final Training Needs.
    Kindly provide me help, as to how I will be able to achieve that and in what Infotypes the data pertaining to Training and Event Managment will be stored.
    If u all can kindly share with me the User Manuals and Configuration Docs of Training and Event Management, it will be of great help.
    Thank you all.

    Hi,
    Competencies can be stored as qualifications in PD and then by activation of PD PA intergration can be seen from pa30 infotype 24.
    Qualifications can be stored against a Job/Position and are called as the Requirements. They are seen as a separate Tab and to which ever position the person is linked to the corresponding qualifications of the position will appear in the requirements tab.
    You can maintain the proficiency and a note along with the qualification when assigned to a person.
    Also Appraisals can have qualifications in the template rather than criteria and criteria groups.
    Also after training is completed during the follow up we can create an appraisal and transfer the qualifications or simply transfer the qualifications to the employee.
    Regards,
    Divya

  • How can I implement a status bar at the bottom of a resizable application?

    Hello all,
    I am a JavaFx newbie and I am implementing an application (a Sokoban game), with a menu at the top of the frame and a gaming area covering the rest of the frame. To support the game, I have to load images at certain positions in the gaming area.
    The game also includes a level editor with another menubar and where images are set to other positions.
    I implemented this in another view, swiching from the game mode to the level editor mode and vice versa is just done by setting the other view visible. Up to now this works, here the important statements building these details:
    Group root = new Group();
    gameView = new Group(); // for gaming mode
    le_view = new Group()   // for level editor mode
    MenuBar gameMenubar = new MenuBar();
    Menu menuGame = new Menu(bundle.getString("MenuGame"));
    ... building the menu items and menues ...
    gameView.getChildren().add(gameMenubar);
    ImageView buildingView[][] = new ImageView[22][22];
    for (nCol = 0; nCol < 22; nCol++) {
        for (nRow = 0; nRow < 22; nRow++) {
            buildingView[nCol][nRow] = new ImageView();
            buildingView[nCol][nRow].setX(nCol * 26 + 5);
            buildingView[nCol][nRow].setY(nRow * 26 + 40);
            gameView.getChildren().add(buildingView[nCol][nRow]);
    gameView.setVisible(true);
    root.getChildren().add(gameView);
    ... same stuff to build the le_view ...
    le_View.setVisible(false);
    root.getChildren().add(le_View);
    Scene scene = new Scene(root, 800, 600, Color.CORNSILK); Now I want to introduce a status bar at the bottom of the frame, which of course has to follow the bottom of the frame, if it is resized. And of course the menu and the status bar should not grow vertically, if the height of the frame is increased.
    The implementation seems to be easy with StackPane for the frame and one BorderPane for each mode.
    For the first step I only tried implementing the game mode with only one BorderPane (just setting the menu, the gaming area and the status bar each into a HBox and setting these three HBoxes at the top, into the center and at the bottom). I also tried this via GridPane and via VBox; I always get any erroneous behaviour:
    Either the menubar is visible, but the menus do not pop up the menu items, or the anchor point of the menu and of gaming area are set 100 pixels left of the left frame border and move into the frame when the frame width is increased, or the menu is set 20 pixels below the top of the frame, or HBox with the menu grows when the frame height is increased, so that the anchor point of the gaming area moves down.
    Can you describe me a correct construction of such a frame? Thanks in advance.
    Best regards
    Gerhard

    Hello Gerhard,
    Glad the code helped, thanks for a fun layout exercise.
    For the draft code I just pulled an icon off the internet over a http connection.
    If you haven't done so already place any icons and graphics you need local to your project, so that resource lookups like:
    Image img = new Image("http://www.julepstudios.com/images/close-icon.png");become
    Image img = new Image("close-icon.png");then performance may improve.
    Another possible reason for your performance problem could be that when you use a vbox, the vbox content can overflow the area of the borderpane center and might be sitting on top of the menu pane, making you unable to click the menu (which is what happens to me when I try that with the draft program with the vbox wrapping mod, then resize the scene to make it smaller). This was a trick which caught me and the reason that I used a Group originally rather than a vbox. I found a vbox still works but you need to tweak things a bit. The trick I saw was that the order in which you add stuff to the borderpane is important. The borderpane acts like a stack where the last thing added floats over the top of everything else if you size the scene small enough. For your project you want the menu on top always, so it always needs to be the last thing added to the borderpane, but when you swap in the level pane for the game pane, then back out again, the game pane can end up on top of the menu which makes the menu seem like you can't click it (only when the scene is sized small enough). It was quite a subtle bug which took me a little while to work out what was happening. For me the solution was to add just one vbox to the center of the border, and then swap the game pane and the level editor in and out of the vbox, that way the center of the layout always stayed behind the menu bar and the status bar.
    I added some revisions to reflect the comments above and placed some comments in the code to note what was changed and why.
    public class SampleGameLayoutRevised extends Application {
      public static void main(String[] args) { Application.launch(args); }
      public void start(Stage stage) throws Exception {
        final BorderPane gameLayout = new BorderPane();
        final Group gameView = new Group();
        final MenuBar gameMenubar = new MenuBar();
        final Menu gameMenu = new Menu("Mode");
        final VBox centerView = new VBox();
        centerView.setStyle("-fx-background-color: darkgreen");  // we set a background color on the center view to check if it overwrites the game menu.
        MenuItem playGameMenu = new MenuItem("Play Game");
        MenuItem levelEditMenu = new MenuItem("Edit Levels");
        gameMenu.getItems().add(playGameMenu);
        gameMenu.getItems().add(levelEditMenu);
        gameMenubar.getMenus().add(gameMenu);
        final StackPane levelEditView = new StackPane();
        levelEditView.getChildren().add(new Text("Level Editor"));
        ImageView buildingView[][] = new ImageView[22][22];
        Image img = new Image("http://www.julepstudios.com/images/close-icon.png");  // use of http here is just for example, instead use an image resource from your project files.
        for (int nCol = 0; nCol < 22; nCol++) {
          for (int nRow = 0; nRow < 22; nRow++) {
            ImageView imgView = new ImageView(img);
            imgView.setScaleX(0.5);
            imgView.setScaleY(0.5);
            buildingView[nCol][nRow] = imgView;
            buildingView[nCol][nRow].setX(nCol * 20 + 5);
            buildingView[nCol][nRow].setY(nRow * 20 + 40);
            gameView.getChildren().add(buildingView[nCol][nRow]);
        final VBox statusBar = new VBox();
        final Text statusText = new Text("Playing Game");
        statusBar.getChildren().add(statusText);
        statusBar.setStyle("-fx-background-color: cornsilk"); // we set a background color on the status bar,
                                                              // because we can't rely on the scene background color
                                                              // because, if the scene is sized small, the status bar will start to overlay the game view
                                                              // and if we don't explicitly set the statusBar background the center view will start
                                                              // to bleed through the transparent background of the statusBar.
        gameLayout.setCenter(centerView); // we add the centerview first and we never change it, instead we put it's changeable contents in a vbox and change out the vbox content.
        gameLayout.setBottom(statusBar);
        gameLayout.setTop(gameMenubar);   // note the game layout is the last thing added to the borderpane so it will always stay on top if the border pane is resized.
        playGameMenu.setOnAction(new EventHandler<ActionEvent>() {
          public void handle(ActionEvent event) {
            centerView.getChildren().clear();  // here we perform a centerview vbox content swap.
            centerView.getChildren().add(gameView);
            statusText.setText("Playing Game");
        levelEditMenu.setOnAction(new EventHandler<ActionEvent>() {
          public void handle(ActionEvent event) {
            centerView.getChildren().clear();  // here we perform a centerview vbox content swap.
            centerView.getChildren().add(levelEditView);
            statusText.setText("Editing Level");
        playGameMenu.fire();
        Scene scene = new Scene(gameLayout, 800, 600, Color.CORNSILK);
        stage.setScene(scene);
        stage.show();
    }Other than that I am not sure of a reason for the slowdown you are seeing. In my experience JavaFX has been quick and responsive for the tasks I have been using it for. Admittedly, I just use if for a bunch of small trial projects, but I've never seen it unresponsive for a minute.
    - John

  • Error while activating the Implementation class of a BADI ?

    Hello,
    I am trying to activate a BADIi but its implementation class(ZCL_IM_DSD_ADD_CUST_IN_DNL) is not getting activated and giving the following object error on activation.
    CPUB     ZCL_IM_DSD_ADD_CUST_IN_DNL
    and it says that  "INCLUDE report "ZCL_IM_DSD_ADD_CUST_IN_DNL====CL" not found , where "DSD_ADD_CUST_IN_DNL" is the Impl. name of the definition "/DSD/ME_BAPI"  implementing the interface "/DSD/IF_EX_ME_BAPI".
    what am i missing here. Big time help will be extremely appreciated ..
    Thanks a ton.

    Hi,
    I had a quick qn,
    Normally, the implementation name should start with Z. Can you create using the name 'DSD_ADD_CUST_IN_DNL' ? or are you using any access key (SSCR)?
    For the infm, I have just tried to create one Z  implementation in my system and it works fine. Could you please delete the current implementation and try it once again ?
    Regards,
    Selva K.

  • Weaknesses I've come across in the Oracle XML/XSL implementation

    Weaknesses I've come across in the Oracle XML/XSL implementation
    NOTE: I think Oracle is a fantastic database and the XML implementation is lovely to use - also I know these are not limited to XE and also that some are fixed in 11g enterprise however I'm not sure if all are so I am posting here in the hope that Oracle will include fixes for all if any have been missed
    1. getclobval() returns a spurious carriage return on end of the value returned
    2. extract does not handle mixed content tags well (for example it simply discards tags that only have whitespace between them
    3. XSL: using a xsl:number level="multiple" with anything beyond a simple count= xpath value crashes the database completely
    4. XSL: insists on pretty printing output XML which is extremely odd behaviour and causes problems when dealing with mixed content

    Another weakness I've seen is with the appendchildxml function and mixed content xml - it appears to likewise pretty print XML causing the injection of carriage returns and whitespace into mixed content nodes

  • Implementing the Enterprise Support in Solution Manager

    Hi Experts,
    Can anybody tell me what are the pre requisites to implement Enterprise support in solution manager?
    Also let me know what are steps involved in implementing the enterprise support.
    Thanks in Advance
    Hari

    Hello Hari,
    In order to implement Enterprise Support your organization should registered as a Value Added Reseller(VAR) with SAP. You can get all the required documentation under https://websmp104.sap-ag.de/solutionmanager --> Information for VARs, ASPs and AHPs which is in the left hand side of the page. However, you need to have a S-user ID of the VAR.
    The following are the steps need to perform in implementing the Enterprise Support firmly known as Service Desk for VARs.
    1. SAP Solution Manager basic settings (IMG)
      a) Initial Configuration Part I
      b) Maintain Profile Parameters
      c) Maintain Logical Systems
      d) Maintain SAP Customer Numbers
      e) Initial Configuration Part II
         1) Activate BC Set
             a) Activate Service Desk BC Set
             b) Activate Issue Monitoring BC set
             c) Set-up Maintainance optimizer
             d) Change online Documentation Settings
             e) Activate Solution Manager Services
             f) Activate integration with change request Managemnt
             g) Define service desk connection in Solution Manager
       2)Get components for SAP Service Market place
            a) Get SAP Components
       3) Get Service Desk Screen Profile
           a)generate Business Partener Screen
       4)Copy By price list
           a)activate Service Desk BC Set
           b)Activate Issue Monitoring BC set
           c)Set-up Maintainance optimizer
          f) Business Add-In for RFC Connections with several SAP customers
          g) Business Add-In for RFC Connection of Several SAP Cust. no.
          h) Set-Up SAP Support Connection for Customers
          i) Assign S-user for SAP Support Portal functionality
          j) Schedule Background Jobs
          k) Set-Up System Landscape
          l) Create Key Users
          m) Create Message Processor
    2. Multiple SAP Customer Numbers
          a) Business Add-In for RFC Connections with several SAP customer numbers
          b) Set-Up SAP Support Connection for Customers
    3. Data transfer from SAP
          a) Data Transfer from SAP
    4. Create u201COrganizationu201D Business Partner
    5. Service Provider function (IMG)
          a) Business Add-In for RFC Connections with several SAP customer numbers
          b) Business Add-In for Text Authorization Check
          c) Activate BC Set for Service Provider
          d) Activate Text Types
          e) Adjust Service Desk Roles for Service Provider Menu
    6. Service Provider: Value-Added Reseller (VAR)
          a) Business Add-In to Process Actions (Post-Processing Framework)
         b) Activate BC Sets for Configuration
         c) Create Hierarchy and Product Category
         d) Set-Up Subcategories
         e) Create Business Partner as Person Automatically
         f) Set-Up Automatic Confirmation of Messages
        g) Maintain Business Partner Call Times
        h) Set-Up Incident Management Work Center
    7. Work Center (Web UI)
        a) Activate Solution Manager Services
        b) Assign Work Center Roles to Users
    Hope it helps.
    Regards,
    Satish.

  • How to find out the user exit is implemented

    Hi All,
    Kindly let me know the process to be followed to find out the User exit is implemented in SAP system.
    I have seen many senriors suggestions for some treads to check if there is any Exit is implemented in the process when the system is behaving differently rather standard.
    Is it the only way with help of ABAP'er we can find out or the functional consultant also can find out through some procedure?
    I tied in google for this doubt, but i could not get the relavant answer.Pleaea execuse me if this already answered.
    Thanks,

    Hi Krishna/TW,
    Thank you for your immediate replies. Sorry i think i have not explained correctly my requirment.
    Let me explain my requirement once again.Let us say Comapny has implemented one Exit in the project, now i want to find out what exactly the Exit was implemented.
    Example: In STO process user is able to increase the  qty in delivery. As per the client requriement system should not allow.
    This is not possible in standard to control even after maintainig  check over delivery field in 0VLP.
    For this comapny has already implemented one enahnceament.
    User Exit : USER EXIT_READ_DOCUMENT
    Program: MV50AFZ1
    like this when any one joined in the project we do not know what are all the Exits are implemented in the SAP system where we are working.
    So if i want to find out if there is any Exit or enhancement implemented, what is the process to find out?
    I hope now  am clear with my requirement.
    Thanks in advance.

Maybe you are looking for

  • Cant't get one to many relation to work.

    I tried to without success to retrieve an object that represents a simple parent child relation in an existing database. (the object is supposed to represent one record of the parent table and contain a Collection of all records in the child table) I

  • Voyager 220v Router - How to connect 2nd. computer...

    I have already installed the USB drivers from the setup CD and my main computer is successfully connected via the USB port on the 220v Router. I now want to add a laptop and I understand that this can just be directly connected using the Ethernet cab

  • Exporting Oracle 10g reports into Excel 2007

    Does anybody knows if there exits compatibility with the export function to Excel 2007? Some users will be installing this Excel version and i don't know if the formatting and displaying will be similar as using previous versions. They use the export

  • SQL server service and SQL agent service

    Hi all. If I am going to use a Domain User to start SQl server service and SQL agent service, does the domain user need to  be SYSADMIN ????

  • In XP Infinity Blocks are missing when logged in as a user

    On XP Computers when I am logger on as adminstrator there is no problem.  When my students are logged on as users, some of the Infinity Blocks are missing.  For example on Ch 2.1 Sec 2.2 lab, the ITOGGLE Block is a question mark.  I can search and fi