Problems synthesizing the single core opensparc implementation

I am new to opensparc based designs. I just downloaded the opensparc T1.7. When I tried to update the bitstream, I got the following error:
ERROR:Par:73 - Cannot find Input file "system_map.ncd". Please verify that your paths and permissions are properly set
for this file.
ERROR:Xflow - Program par returned error code 21. Aborting flow execution...
make: *** [__xps/system_routed] Error 1
Done!
I am running the synthesis on Xilinx XPS 10.1 SP3 on a windows xp machine.
Thanks in advance.

this is the full error I was getting:
ERROR:Portability:3 - This Xilinx application has run out of memory or has
encountered a memory conflict. Current memory usage is 2080128 kb. You can
try increasing your system's physical or virtual memory. For technical
support on this issue, please open a WebCase with this project attached at
http://www.xilinx.com/support.
Design Summary
Number of errors : 0
Number of warnings : 445
# Starting program par
# par -w -ol high system_map.ncd system.ncd system.pcf
Release 10.1.03 - par K.39 (nt)
Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved.
PMSPEC -- Overriding Xilinx file <C:/XilinxTools/ISE101/EDK/data/parBmgr.acd> with local file
<c:/XilinxTools/ISE101/ISE/data/parBmgr.acd>
ERROR:Par:73 - Cannot find Input file "system_map.ncd". Please verify that your paths and permissions are properly set
for this file.
ERROR:Xflow - Program par returned error code 21. Aborting flow execution...
make: *** [__xps/system_routed] Error 1
Done!
The solution is to extend the virtual memory on my machine to 3GB and adding the string "/3GB" to the end of the start-up line of boot.ini file to allow more than 2 GB that my OS (windows xp) was allowing for each application.

Similar Messages

  • Manually synthesizing the T1 core

    In the OpenSPARC T1 1.6 release, scripts are included to automatically synthesize T1 blocks. The synthesis can be done by Synplicity or by XST. The scripts to do this are named rsynp and rxil, respectively. The usage of these scripts is documented in the OpenSPARC T1 Design and Verification Guide.
    These scripts are written in Shell language and Perl, so they will probably not run on a Windows machine unless a package of Unix utilities is installed. Such packages do exist, and some are free to download.
    However, if you want to manually compile the design using ISE, for example, there are a few things to keep in mind. First of all, the original code had blocks which are not synthesizable. For example all the RAM models are not synthesizable. To make them synthesizable for FPGA, and to get them to map into Block RAM, we added several compile options into the code. When settting up a compile to ISE, the required option is to set the FPGA_SYN . This makes all the changes necessary for FPGA synthesis, including selecting RAM models that will map correctly into Xilinx block RAM. (Anyone who wants to map to Altera or other FPGA brands may need to modify the models a little bit). I don't know exactly how to select these compile options, but it's probably a command similar to "+define+FPGA_SYN+".
    The above command will enable FPGA synthesis, but there are other options available to reduce the size of the core (see the Design and Verification Guide). For example the FPGA_SYN_1THREAD reduces the size of the core by reducing it from 4 threads to 1. This is required if you are synthesizing into a smaller FPGA like the XC4VFX50 found on the ML410 board. Other options allow for even more reduction in size.
    Another problem encountered with Windows machines is the memory limitation. Windows XP machines are only able to address 3GB of physical memory, and the Virtual memory is limited to 2GB. If any process requires more than 2GB, it won't be able to complete. We ran into this exact problem when running place & route. Even though we put 4GB of RAM in the machine, it still ran out of memory (the Virtual memory was the limit). See the following web site for a possible workaround.
    http://www.xilinx.com/support/answers/14932.htm
    formalGuy

    Here is a little more information on how to synthesize the T1 core manually from the ISE GUI. This is the procedure to follow if you can't use our automated scripts rsynp and rxil. (For exampe if you are on a Windows machine).
    From the start menu, select ISE -> Project Navigator
    From the Project Navigator GUI, select File->New Project ( the new project wizard may come up automatically if it is the first time you are running Project Navigator
    Select a project name and the project path
    Click next
    The next window is Device Properties:
    Select the correct Device, Package, and speed grade for your board.
    Click next
    The next window is Create new source.
    Just skip this and click next
    The next window is Add existing Source
    Just skip this and click next
    Finish the Wizard to create the project.
    Now search for the following file which is a source list for the sparc core:
    design/sys/iop/sparc/xst/sparc.flist
    You need to select add sources and add each file from the file list to the project.
    (There should just be some way to add the list, but I cannot figure out how to do it. Any ISE experts out there?)
    Note that you may need to copy files ending with .behV to a new name ending with .v so that ISE recognizes the files a Verilog files.
    The next step is to set the compile time macros: To do this:
    1. Look for the ISE sub-window on the left labeled "Processes"
    2. Find the "Synthesize-XST" entry in that window
    3. Right click on that entry and select "Properties"
    4. In the popup window "Process Properties - Synthesis Options,
    select "synthesis options in the left window
    5. Set the property display level to "Advanced"
    6. In the right list scroll down to find the property
    "Verilog Macros"
    7. Type the value FPGA_SYN FPGA_SYN_1THREAD FPGA_SYN_NO_SPU FPGA_SYN_8TLB in that box.
    Finally Run synthesis:
    From the Processes window, right-click on Synthesize-XST and select Run in the popup Menu.
    Hopefully, this gives enough details that you can figure the rest out.
    formalGuy

  • Disco Plus Single Core v Dual Core

    Discoverer Plus on a Quad/Dual Core processor machine has severe performance issues.
    We've tested it against a machine with less RAM but single porcessor and is so quicker on the single core...
    Any ideas?

    Hi
    On a client machine, there are known issues with hyper-threading which is using machines that have multiple cores. If you are using Discoverer 10.1.2 these issues have been fixed. I would advise you to patch up your Discoverer server to 10.1.2.2 using cumulative patch 6.
    I have placed a posting concerning patches on my blog which you may find useful:
    http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html
    Best wishes
    Michael

  • Power Mac MDD G4 1.25 Single Core vs. Dual Core

    I am purchasing a 1.25 MDD G4 that has the single core processor. I am going to be using it for music recording and creation.
    Am I going to wish I had the dual core? Or will I not notice the difference? I was previously using a 700mhz imac with 765mb of ram and overloaded it pretty quickly.
    This machine, with 1 (which is has) or 2 (which I might install) gigs of ram should outshine that pretty significantly even with a single core shouldn't it?

    Dual if you can, especially if you're looking to go to Leopard during the life of the machine. Single G4 CPU and Leopard is painfully slow, even at 1.67GHz.
    Even the current entry level iMac blows away most of the G5's, except maybe the quad cores) so G5's should be reasonably priced.

  • Adobe Media Encoder only using single core of CPU (core parking has already been disabled and did not solve the problem)

    I only edit videos every few months and the last time I edited a video was around 6-9 months ago.  At that time, I noticed AME was only using a single core of the CPU and contacted Adobe who instructed me to disable core parking, which worked.  After disabling core parking AME used 100% of all 12 logical cores to process the video and all was good.  Then last week, I decided to edit another video and noticed AME was very slow and checked and it was again only using a single core to process the video, but core parking is still turned off.  By slow I mean that a 10 minute video with the lens distortion correction preset and one video transition effect is estimated to take nearly 3 hours to complete.  For comparison, the GoPro software processed the same clip with the same effects in 20 minutes.  Also, through troubleshooting with Adobe over the last few days, I have also tried downloading previous versions of the software but the prior versions have the same issue.
    The video I'm trying to edit was shot on a GoPro Hero 4 Black with 1080p Wide at 60 frames per second.  The default video format for GoPro is .mp4.   The output settings I'm using when I export from Premiere Pro to AME are H.264 with the YouTube 1080p HD.
    My system:
    ASUSSabertooth X79
    Intel core i7 4930k (6 physical cores, 12 logical cores)
    16GB DDR3 Quad channel RAM
    Samsung 830 SSD 128GB
    NVIDIA GeForce GTX 460 (not CUDA compatible, I know)
    Please ask if you need any additional information to help solve this problem.

    This has been driving me CRAZY... so going over the message boards from 2 to 5 am this morning I found the best explanation I have seen.   The problem is that Adobe Creative Cloud is NOT "Processor Group Aware".  Windows parses any more than 36 cores into "Processor Groups" and while the Pro version of Windows 7 & 8 can handle 256 threads they have to spread them across multiple processor groups.
    Simple Version:  AREA | How many cores does 3ds Max support?
    Microsoft's Explanation:  Processor Groups (Windows)
    Clearly, this is an Adobe Problem... If any engineers are reading this PLEASE review the below and incorporate it into your next build of Creative Cloud!!!
    https://msdn.microsoft.com/en-us/library/windows/hardware/dn653313%28v=vs.85%29.aspx
    Again, I bought a VERY expensive machine based on your white paper that recommended Dual Xeon Workstations.  Please, Please Give us the product you PROMISED!!!
    Michael

  • Build problem with makepkg of linux in the abs(core/linux)

    Hi,all
    I wanted to have a taste of systemtap, I read this page:https://wiki.archlinux.org/index.php/Systemtap,and followed the guide,but had problem like this:
    scripts/link-vmlinux.sh: line 135: ./.config: No such file or directory
    It looks like the configuration file is gone, I checked a little about PKGBUILD, and finded the .config was generated at almost the begining, and i didn't know why it comed this problem.
    Is there anyone have experience like this and help me ?
    PS: my current linux version is
    # pacman -Q linux
    linux 3.7.9-2
    and use the latest core/linux in abs repo

    hi ,
    for the ifconfig u will not get the settings done for the static address bcoz while installing linux i have configured for using the static address method and when i checked for connecting to internet i was not able to so using command line i changed for DHCP configuration and then internet worked
    i changed the following files
    1. /etc/sysconfig/network-scripts/ifcfg-eth0
    2. /etc/sysconfig/network
    3. ifup eth0
    4.ifconfig eth0 up
    5.chkconfig
    6.service network restart
    after doing all these i checked for connecting to internet and was successful
    why internet does not work in linux when configured for static address
    Can we go for dual boot
    plz answer for these also i will thankful
    [root@localhost ~]# ls -arlt /media/oracle10g
    total 12
    dr-xr-xr-x 1 root root 2048 Jul 22 22:55 database
    dr-xr-xr-x 1 root root 2048 Jul 23 00:06 .
    drwxr-xr-x 3 root root 4096 Aug 20 13:24 ..
    [root@localhost ~]# uname -a
    Linux localhost 2.6.18-1.2798.fc6xen #1 SMP Mon Oct 16 15:11:19 EDT 2006 i686 i686 i386 GNU/Linux
    [root@localhost ~]# file cd /media/oracle10g/database/install/.oui
    cd: ERROR: cannot open `cd' (No such file or directory)
    /media/oracle10g/database/install/.oui: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
    [root@localhost ~]# ls -la /media/oracle10g/database/install/.oui
    -r-xr-xr-x 1 root root 163185 Jul 2 2005 /media/oracle10g/database/install/.oui
    [root@localhost ~]# ifconfig |cut -d" " -f1
    eth0
    lo
    peth0
    vif0.0
    xenbr0
    plz suggest me what i am supposed to do
    plz help me to successfully install oracle10g in linux(fedora core 6)

  • I am running OSX 10.6.8 and when I try to install the latest security update there is an unknown error and the update cannot be implemented. I still have to restart my computer each time I try. Is anyone else experiencing this problem?

    I am running OSX 10.6.8 and when I try to install the latest security update there is an unknown error and the update cannot be implemented. I still have to restart my computer each time I try. Is anyone else experiencing this problem?     
    I tried using the downloaded update. It still didn't work but at least I did not have to restart my computer. The message was a little different too: "The installation failed. The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance."

    Run through this list of fixes, either something is corrupted or you have malware that's blocking the update.
    ..Step by Step to fix your Mac
    Make sure to backup your users files to a external storage drive first (not only TimeMachine as it may fail to restore) and disconnect, because if' it's a drive corruption/failing then the entire thing will either have to be replaced or a wipe and install done.
    Most commonly used backup methods
    If you do need to do a wipe and install
    How to erase and install Snow Leopard 10.6
    For Snow Leopard Speed Freaks

  • HT3910 I face problems with the Nvidia 8800 GS on my iMac 24'' 3.06Ghz intel core duo. OS 10.06.08. What can I do to solve the problem and if you recommend upgrade to mountain Lion

    I  face problems with the Nvidia 8800 GS on my iMac 24'' 3.06Ghz intel core duo. OS 10.06.08. What can I do to solve the problem and if you recommend upgrade to mountain Lion

    If you want to sync it to the iPad from that Mac, you need to upgrade it to at least 10.5.8.
    If you want to copy the music to another Mac, you don't. Move the iTunes folder of the item in the Finder's sidebar over as you would any other folder. If you put it somewhere other than the Music folder, launch iTunes with the Option key held down and point it to that location.
    (61713)

  • Display document in the Single Document web item -authorization problem.

    Hi Gurus,
    I have a problem.
    I have two types of users, users for display document in the Single
    Document web item and users who can maintain and create new comment in
    the Single Document web item.
    My problem is I can't create users that can only display documents (all
    users who can display the query can add new comment).
    We use the new 7.0 Authorization.
    The authorization object S_RS_ADMWB doesnu2019t influence about the
    activity in the Single Document web item.
    In the new authorization method, in PFCG or in RSECADMIN there is no
    functionality that we can separate between the two types of users I
    mention before.we used S_RS_COMP & S_RS_COMP1.
    Please advice
    Sharon.

    Hi Sankar,
    this may be helpful
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/e3/ae133bdca84047e10000000a11402f/content.htm">http://help.sap.com/saphelp_nw04/helpdata/en/e3/ae133bdca84047e10000000a11402f/content.htm</a>
    Pavel

  • Single core overload problem

    Sorry folks, another CPU overload complaint. I'm having crazy overloads which seem to be specific to core 2 of my G5 2.0 GHz Dual core processor. Core 2 will max out resulting in crackling audio when simply playing chords on one soft synth. I have experimented with different synths, but the problem still seems inherent although the severity seems to fluctuate depending on the synth used. Core 1 often lies idle while core 2 is going nuts and overloading. Changing some tracks to different busses seems to do nothing to change the distribution of processing to the other core.
    This problem is rendering my rig almost unusable, because as soon as i introduce more instruments/tracks into the mix, it just completely maxes out and dies.
    I am running 12Gb Ram, so it's definitely not that which is causing issues. Running Motu Ultralite interface, which is apparently fairly robust.
    Can anyone make any suggestions? I've tried a lot of other answers on this forum to similar issues, all to no avail.
    Any help will be VERY much appreciated!
    Thanks
    Bob

    there is an instrument that is already recorded?
    Maybe Kontakt? (does not support multicore)
    Please give me more info about the Software instruments
    if you don't want that... try to freeze all heavy 3rd party plugins... some of them does not support freeze (Omnisphere sometimes..not always)... if you enconter problem with an instrumen try to bounce it as audio in real time!
    SOLO MODE MUST BE SET AS
    this allow you to bounce SOLO tracks and Savings CPU power!
    Somtime i forget this very good function but this is the Logic 7 setting!!!
    I'm a old school Logic user
    I always set as Saving CPU... this is a great feature...
    ONLY LOGIC can do that!
    I use Logic 8 without use new features... Logic 7 was better...
    That is why on my machines LP8 is Rock Solid!!!
    LP8 sounds better tha lp7... of course
    G

  • Can anyone send the Single Signon implementation guide document?

    We need implement the single signon between the PeopleSoft Portal 9.0 and PeopleSoft HCM 9.0, please help post the related implementation and configuration document.

    Have a look to that thread :
    Re: How to implement Single Sign On
    Nicolas.

  • What the heck is Single Core, Dual Core, and Quad Core Processor Configurat

    I am listing an eMac computer on ebay. I have all the information necessary except processor configuration. Do eMacs come with Single, Dual, or Quad processor configurations? Or does it vary? I don't even know what those are really.

    Make sure to follow these steps when selling*:
    http://www.macmaps.com/selling.html
    As was already indicated all eMacs were single core.
    Apple didn't start releasing multicore machines until the later G5s.
    - * Links to my pages may give me compensation.

  • Unable to capture data from Serial port using LVRT2010 in single core pentium 4 machine

    I am using application written in Labview using windows Labview
    Runtime environment 2010. Application creates a tunnel to intercept data from
    Serial port.
    My problem is, Currently, I am using single core Pentium
    processor. When I am trying to intercept the data between COM1 and COM7 (COM 7
    is a virtual port) it is not able to capture data.
    When I am running Labview RT environment using dual core
    processor machine it is running normally. I wonder whether it could be the compatibility issues with
    single core Pentium processor.

    Hi Magnetica
    Are both of the machines running the same runtime engine,
    drivers ect?
    Have you had RT applications running on this
    machine before?
    Is the development computer a 64bit machine?
    The processor is a supported model (See link below).
    http://zone.ni.com/devzone/cda/tut/p/id/8239
    Regards
    Robert
    National Instruments UK & Ireland

  • Feedback request for a Single Instance Application Implementation

    Hello,
    I have been working on a class which I tried to make the most generic I could so that I could re-use it for various projects. It offers 2 main functionalities:
    -Preventing multiple instances of an application
    -Allowing a user to stop the application even if it doesn't read any user input
    Of course if someone wants to have multiple instances of the same application, it is still possible. The only requirement is that each instance be configured to run on a different port.
    I would like your feedback on how I've implemented this to make sure I haven't missed the chance to make my Class flexible and re-usable. I would also make sure that there aren't any situations where the different threads used for realizing this functionality will run into any conflicts.
    My code includes the following files:
    Serviceable.java : An interface which must be implemented by every application using these classes
    DuplicateServiceException.java : An exception thrown when an instance of the application is already running
    Service.java : The class responsible for offering the functionalities I already mentionned
    Main.java : An example of a class implementing Serviceable and offering two ways of closing the Application. 1- By closing the JFrame which is displayed. 2- By sending the stop command.
    In order to execute this example, you have to specify the following command line arguments:
    -DService.Command={start/stop} //Either start or stop command
    -DService.Port=<0-65535> //Port to be used for receiving the stop command and preventing multiple instances
    Serviceable.java
    * Serviceable cares about two parts of the life of a Service.  Its startup
    * and its shutdown sequences.  The startup occurs only after making sure
    * no other instance of the Service is running.  Shutdown has to be
    * synchronized between multiple threads since it is possible to shutdown
    * the service through a shutdown command sent by another process, or through
    * the normal flow of execution of the service.
    * @author Gabriel Aubut-Lussier
    public interface Serviceable {
          * Initiates the startup of the Service since we have made sure
          * that there isn't any other instance of the Service running.
         public void startup();
          * Initiates the shutdown of the Service since we've received
          * a shutdown request from one of the two supported means of
          * shutting down.
         public void shutdown();
    DuplicateServiceException.java
    public class DuplicateServiceException extends Exception {
          * serialVersionUID?  Bah. Eclipse generates one automatically so why not...
         private static final long serialVersionUID = 3929576386522489749L;
         public DuplicateServiceException() {
              super();
         public DuplicateServiceException(String msg) {
              super(msg);
    Service.java
    * The same way a graphical application is running as long as there
    * is something to display, a background service will run as long as
    * there is an active Thread.
    * A service can be terminated in different ways.  First of all, it
    * can be terminated through its normal flow of execution.  On the
    * other hand, it is possible to provoke the termination of a Service
    * externally.
    * To terminate the service through the normal flow, just call the
    * Service.shutdown() method.  Another way to terminate the service
    * is to start a new instance of the program with the Stop command.
    * This Service implementation will behave according to two system
    * properties.  The property Service.Command can be set
    * to "start" or "stop".  When set to "start", the Service will make
    * sure there isn't another instance of the service already running.
    * If it is the case, a DuplicateServiceException will be thrown.  In
    * the other case, the Service will start.  When the "stop" command
    * is invoked, the Service will attempt to stop a running instance of
    * the Service.  The other property is Service.Port and
    * it defines the Port number which will be used to support the
    * functionalities offered by the Service class.
    * It is recommended to set these properties as command line arguments
    * when launching the application.  Moreover, batch files or shell
    * scripts can be created for invoking the start and stop commands.
    * @author Gabriel Aubut-Lussier
    public class Service implements Runnable {
         public final static String START_COMMAND = "start";
         public final static String STOP_COMMAND = "stop";
         public final static String SERVICE_COMMAND = "Service.Command";
         public final static String SERVICE_PORT = "Service.Port";
         private String serviceCommand;
         private int servicePort;
         private Serviceable service;
         private ServerSocket serviceListener;
         private Thread serviceThread;
          * Creates a new service registering the hooks required to perform
          * clean termination sequences.
          * @param s
          * @throws DuplicateServiceException
         public Service(Serviceable s) throws DuplicateServiceException {
              service = s;
              serviceCommand = System.getProperty(SERVICE_COMMAND);
              String servicePortString = System.getProperty(SERVICE_PORT);
              if(servicePortString == null)
                   servicePort = -1;
              else
                   servicePort = Integer.parseInt(servicePortString);
          * Try running this new Service instance if there isn't one
          * already running.
          * @throws DuplicateServiceException if another service instance is already running.
         public void start() throws DuplicateServiceException {
              if(serviceCommand == null || servicePort < 0) {
                   throw new IllegalArgumentException("The command and port number must be specified.");
              if(serviceCommand.equals(START_COMMAND)) {
                   try {
                        serviceListener = new ServerSocket(servicePort);
                        serviceThread = new Thread(this);
                        serviceThread.start();
                        service.startup();
                   } catch(BindException e) {
                        throw new DuplicateServiceException("An instance of the service is already running.");
                   }catch(IOException e) {
                        e.printStackTrace();
              } else if(serviceCommand.equals(STOP_COMMAND)) {
                   shutdown();
          * Provoke a shutdown command.
         public void shutdown() {
              try {
                   Socket sock = new Socket("localhost", servicePort);
                   OutputStreamWriter out = new OutputStreamWriter(sock.getOutputStream());
                   out.write("shutdown");
                   out.flush();
                   out.close();
                   sock.close();
              } catch (UnknownHostException e) {
                   e.printStackTrace();
              } catch (IOException e) {
                   //This exception may occur when trying to stop a service which wasn't running.
                   //There is no need to do anything in this case.
          * While the Service is running, it listens on a port to make sure no
          * other instance of this Service is started and to listen to shutdown
          * commands.
         public void run() {
              boolean keepGoing = true;
              while(keepGoing) {
                   try {
                        Socket sock = serviceListener.accept();
                        InputStreamReader in = new InputStreamReader(sock.getInputStream());
                        char cBuf[] = new char[256];
                        int amount = in.read(cBuf);
                        in.close();
                        sock.close();
                        keepGoing = !((new String(cBuf, 0, amount)).equals("shutdown"));
                   } catch (IOException e) {
                        e.printStackTrace();
              try {
                   service.shutdown();
                   serviceListener.close();
              } catch(IOException e) {
                   e.printStackTrace();
         public String getServiceCommand() {
              return serviceCommand;
         public void setServiceCommand(String serviceCommand) {
              this.serviceCommand = serviceCommand;
         public int getServicePort() {
              return servicePort;
         public void setServicePort(int servicePort) {
              this.servicePort = servicePort;
    Main.java
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.JFrame;
    public class Main implements Serviceable {
         private JFrame window;
         private Service service;
         public static void main(String[] args) {
              new Main();
         public Main() {
              try {
                   service = new Service(this);
                   service.start();
              } catch(DuplicateServiceException e) {
                   e.printStackTrace();
         public void startup() {
              window = new JFrame("SERVICE TEST! :D");
              window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              window.addWindowListener(new WindowAdapter() {
                   public void windowClosed(WindowEvent e) {
                        service.shutdown();
              window.setVisible(true);
         public void shutdown() {
              System.out.println("Application shutdown");
              window.dispose();
    }Thanks in advance for your feedback.
    -Gabriel Aubut-Lussier

    I have fixed the handshake.
    And even though it isn't implemented yet, I think I have my solution for the limitation of 1 instance per user. I plan on using a hidden file in the user's home directory in which I will write the port number where the running application is listening for events. I have not yet chosen how the port number will be chosen before being written to the file but I am thinking about using a random number between 1024 and 65535. Using this approach, it is possible to maintain all the features I've implemented in the Single Overall Instance solution I already have.
    Here is the code with the handshake fixed:
    Serviceable.java
    * Serviceable cares about two parts of the life of a Service.  Its startup
    * and its shutdown sequences.  The startup occurs only after making sure
    * no other instance of the Service is running.  Shutdown has to be
    * synchronized between multiple threads since it is possible to shutdown
    * the service through a shutdown command sent by another process, or through
    * the normal flow of execution of the service.  Moreover, when another instance
    * is prevented from being launched, the running instance is notified so that it
    * can react to such an event.
    * @author Gabriel Aubut-Lussier
    public interface Serviceable {
          * Initiates the startup of the Service since we have made sure
          * that there isn't any other instance of the Service running.
         public void startup();
          * Notifies the Service that the application has been invoked again in
          * case the running instance wants to react to such an event.  Most GUI
          * applications will just bring themselves to the front while background
          * services will maybe just want to re-scan their configuration files or
          * just ignore the event.
         public void invoke();
          * Initiates the shutdown of the Service since we've received
          * a shutdown request from one of the two supported means of
          * shutting down.
         public void shutdown();
    DuplicateInstanceException.java
    public class DuplicateServiceException extends Exception {
          * serialVersionUID?  Bah. Eclipse generates one automatically so why not...
         private static final long serialVersionUID = 3929576386522489749L;
         public DuplicateServiceException() {
              super();
         public DuplicateServiceException(String msg) {
              super(msg);
    Service.java
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.BindException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    * The same way a graphical application is running as long as there
    * is something to display, a background service will run as long as
    * there is an active Thread.
    * A service can be terminated in different ways.  First of all, it
    * can be terminated through its normal flow of execution.  On the
    * other hand, it is possible to provoke the termination of a Service
    * externally.
    * To terminate the service through the normal flow, just call the
    * Service.shutdown() method.  Another way to terminate the service
    * is to start a new instance of the program with the Stop command.
    * This Service implementation will behave according to two system
    * properties.  The property Service.Command can be set to "start"
    * or "stop".  When set to "start", the Service will make sure there
    * isn't another instance of the service already running.  If it is
    * the case, a DuplicateServiceException will be thrown.  In the
    * other case, the Service will start.  When the "stop" command is
    * invoked, the Service will attempt to stop a running instance of
    * the Service.  The other property is Service.Port and it defines
    * the Port number which will be used to support the functionalities
    * offered by the Service class.
    * It is recommended to set these properties as command line arguments
    * when launching the application.  Moreover, batch files or shell
    * scripts can be created for invoking the start and stop commands.
    * @author Gabriel Aubut-Lussier
    public class Service implements Runnable {
         public final static String START_COMMAND = "start";
         public final static String STOP_COMMAND = "stop";
         public final static String SERVICE_COMMAND = "Service.Command";
         public final static String SERVICE_PORT = "Service.Port";
         private final static String GREETING = "Greetings";
         private final static String QUERY = "?";
         private final static String ACCEPT = "yes";
         private final static String DECLINE = "no";
         private final static String SHUTDOWN = "shutdown ";
         private final static int SO_TIMEOUT = 100;
          * This is the application-specific String
         private String serviceClass;
          * This is the command which we will execute when start() is invoked
          * The value is either "start" or "stop"
          * This value can be configured using the System property: Service.Command
         private String serviceCommand;
          * This is the port which is used to watch for duplicate instances
          * This value can be configured using the System property: Service.Port
         private int servicePort;
         private Serviceable service;
         private ServerSocket serviceListener;
         private Thread serviceThread;
          * Creates a new service registering the hooks required to perform
          * clean termination sequences.
          * @param s A Serviceable class
          * @throws DuplicateServiceException If there is a duplicate instance running
         public Service(Serviceable s) throws DuplicateServiceException {
              service = s;
              serviceClass = s.getClass().toString();
              serviceCommand = System.getProperty(SERVICE_COMMAND);
              String servicePortString = System.getProperty(SERVICE_PORT);
              if(servicePortString == null)
                   servicePort = -1;
              else
                   servicePort = Integer.parseInt(servicePortString);
          * Try running this new Service instance if there isn't one
          * already running.
          * @throws DuplicateServiceException if another service instance is already running.
          * @throws BindException if another application is using the configured port.
         public void start() throws DuplicateServiceException, BindException {
              if(serviceCommand == null || servicePort < 0 || servicePort > 65535) {
                   throw new IllegalArgumentException("The command and port number must be specified.");
              if(serviceCommand.equals(START_COMMAND)) {
                   try {
                        serviceListener = new ServerSocket(servicePort);
                        serviceThread = new Thread(this);
                        serviceThread.start();
                        service.startup();
                   } catch(BindException e) {
                        queryOtherInstance();
                        throw e;
                   } catch(IOException e) {
                        e.printStackTrace();
              } else if(serviceCommand.equals(STOP_COMMAND)) {
                   shutdown();
          * Send the shutdown command to the running instance of the application.
         public boolean shutdown() {
              boolean shutdownSuccessful = false;
              try {
                   Socket sock = new Socket("localhost", servicePort);
                   sock.setSoTimeout(SO_TIMEOUT);
                   //If the greeting doesn't match, it's not a duplicate instance
                   //and we can't shut it down
                   InputStreamReader in = new InputStreamReader(sock.getInputStream());
                   OutputStreamWriter out;
                   if(receivedGreeting(in)) {
                        //Sending the shutdown command
                        out = new OutputStreamWriter(sock.getOutputStream());
                        out.write(SHUTDOWN + serviceClass);
                        out.flush();
                        //Read the confirmation
                        char cBuf[] = new char[1024];
                        int amount = in.read(cBuf);
                        String confirmation = new String(cBuf, 0, amount);
                        if(confirmation.equals(ACCEPT)) {
                             shutdownSuccessful = true;
                        out.close();
                   //Closing the connection
                   in.close();
                   sock.close();
              } catch (UnknownHostException e) {
                   //This exception shouldn't happen unless the loopback address doesn't exist?
              } catch (IOException e) {
                   //This exception may occur when trying to stop a service which wasn't running.
                   //There is no need to do anything in this case.
              return shutdownSuccessful;
          * Reads the greeting from the running instance we are interacting with.
          * @param in An InputStreamReader built on the Socket's InputStream
          * @return True if we received the expected greeting, false otherwise
          * @throws IOException if a problem occurs while receiving the greeting
         private boolean receivedGreeting(InputStreamReader in) throws IOException {
              //Reading the expected greeting from the server
              char cBuf[] = new char[1024];
              int amount = in.read(cBuf);
              String greeting = new String(cBuf, 0, amount);
              return greeting.equals(GREETING);
          * While the Service is running, it listens on a port to make sure no
          * other instance of this Service is started and to listen to shutdown
          * commands.
         public void run() {
              boolean keepGoing = true;
              while(keepGoing) {
                   Socket sock;
                   InputStreamReader in;
                   try {
                        sock = serviceListener.accept();
                        sock.setSoTimeout(SO_TIMEOUT);
                        //Sending a greeting
                        OutputStreamWriter out = new OutputStreamWriter(sock.getOutputStream());
                        out.write(GREETING);
                        out.flush();
                        //Reading the incoming message
                        in = new InputStreamReader(sock.getInputStream());
                        char cBuf[] = new char[1024];
                        int amount = in.read(cBuf);
                        String message = new String(cBuf, 0, amount);
                        //Writing an answer
                        boolean invoked = message.equals(serviceClass + QUERY);
                        if(invoked) {
                             out.write(ACCEPT);
                        } else {
                             out.write(DECLINE);
                             keepGoing = !message.equals(SHUTDOWN + serviceClass);
                        out.flush();
                        //Closing the connection
                        out.close();
                        in.close();
                        sock.close();
                        //Notify the running application is there has been an invocation
                        if(invoked) {
                             service.invoke();
                   } catch (IOException e) {
                        //Seems like an IO operation failed.  Let's just forget about
                        //this connection attempt and wait for another
              //Shutdown the Service
              service.shutdown();
              try {
                   serviceListener.close();
              } catch(IOException e) {
                   //Couldn't close the serverSocket upon shutdown?
                   //weird... but anyhow...
          * Connects to the configured port to check out wether it is a duplicate
          * instance of the application or if it is another application using the
          * same port number.  If it is another application, nothing will happen.
          * @throws DuplicateServiceException if it is a duplicate instance
         private void queryOtherInstance() throws DuplicateServiceException {
              try {
                   Socket sock = new Socket("localhost", servicePort);
                   sock.setSoTimeout(SO_TIMEOUT);
                   //Read greeting
                   InputStreamReader in = new InputStreamReader(sock.getInputStream());
                   String answer = null;
                   if(receivedGreeting(in)) {
                        //Writing the application-specific query
                        OutputStreamWriter out = new OutputStreamWriter(sock.getOutputStream());
                        out.write(service.getClass().toString() + "?");
                        out.flush();
                        //Reading the answer
                        char[] cBuf = new char[3];
                        int amount = in.read(cBuf);
                        answer = new String(cBuf, 0, amount);
                        out.close();
                   //Closing the connection
                   in.close();
                   sock.close();
                   //If the answer is "yes" then it is a duplicate
                   if(answer != null && answer.equals("yes")) {
                        throw new DuplicateServiceException("An instance of the service is already running.");
              } catch (UnknownHostException e) {
                   //This exception shouldn't happen unless the loopback address doesn't exist?
              } catch (IOException e) {
                   //If we fail to query the application appropriately we consider
                   //it isn't a duplicate entry so we do nothing.
         public String getServiceCommand() {
              return serviceCommand;
         public void setServiceCommand(String serviceCommand) {
              this.serviceCommand = serviceCommand;
         public int getServicePort() {
              return servicePort;
         public void setServicePort(int servicePort) {
              this.servicePort = servicePort;
    Main.java
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.net.BindException;
    import javax.swing.JFrame;
    public class Main implements Serviceable {
         private JFrame window;
         private Service service;
         public static void main(String[] args) {
              new Main();
         public Main() {
              try {
                   service = new Service(this);
                   service.start();
              } catch(DuplicateServiceException e) {
                   e.printStackTrace();
              } catch(BindException e) {
                   e.printStackTrace();
         public void startup() {
              window = new JFrame("SERVICE TEST! :D");
              window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              window.addWindowListener(new WindowAdapter() {
                   public void windowClosed(WindowEvent e) {
                        service.shutdown();
              window.setVisible(true);
         public void shutdown() {
              System.out.println("Application shutdown");
              window.dispose();
         public void invoke() {
              System.out.println("Another instance tried to startup");
              window.toFront();
    }

  • Make the link from the single cell of Bex Report and the image of bill

    Hi guys,
    my client scan every bill and archive the image by File.net technology.
    In our Bex Report we have the Bill number and we want to make the link from the single cell and the image of bill.
    The possible paths to solve the problem are:
           Replicate the image in BW and crate a link from the single cell and the image of document.
           Create an URL link from the single cell and the image of document archived on File.net server.
    In witch way we can to implement the two paths?
    Thank you.
    Alessandro

    Hi Alessandro,
    Have you seen "How To…Enhance your Web Query with the Table Interface"?
    You can find it in media library:
    https://websmp105.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000194044
    Best regards,
    Eugene

Maybe you are looking for

  • .cfm pages won't display on CF10 on Windows server 2008

    I have a new VPS setup that has CF10 running on a Windows 2008 box.  My site is setup in IIS and I can navigate to any root folder in browser.  That's because the root folder(s) recognizes index.cfm as a default page.  However, any time I click a lin

  • Is starting fresh the best way

    I just bought the Leopard 10.5.1 to install and I have been having some issues anyways with the new quicktime 7.4 and final cut pro 4.5, I would like to wipe the whole computer and start fresh with leopard but I have the final cut studio disk that i

  • Customer Tranaction History in R12

    Hi Gurus, I need a query to get all the transactions of customers in R12. the transactions includes all DM, CM, INV, REC,PMT and other Which will shows in terms of Debit ,credit and outstanding balance. please can anyone provide me the query to get a

  • SOAP processing failure, error id = 112

    Hi, i call a web service and get the following error message: - <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> - <soap-env:Body> - <soap-env:Fault>   <faultcode>soap-env:Server</faultcode>   <faultstring xml:lang="en">

  • Runtime Workbench Component Monitoring ALL Display: error on page

    Dear all, when go in to Runtime Workbench >Component Monitoring > select ALL and press display ==> nothing coming and showing warning message at status bar that error on page. what to do? Best regards. dushyant,