ALD Problem

Hi,
how we will import PLD Layouts in ALD. how we will select
Database fields in Designer. Preprinted Formats PLD is not
supporting. ALD is in inches. through PLD it's not printing
Exactly.

Hi,
Sridharan T.
ok. but i installed 2005B Version. but how we can solve pre
printed formats. we desingned layouts but it's not printing
Exactly in the point. how we can print exactly in tha format.
PLD is Points we need inches so we converted in to inches
then we designed but it's not printig exactly wht we need. how
we can solve this issuses plz guide me.

Similar Messages

  • ALD VAT Sum Question

    I am a realy newbie regarding to the ALD in Business One.
    I am trying to print out at the end of my producttable in my invoice a line like this:
    "incl. VAT with Code A2 at 16,00% (for instance) of (the amount of all the lines which are calculated with the Code A2) (and then the sum of the taxes)"
    Could you tell me how to describe the function ?
    Thanks in advance

    I had the same problem. At first it looks as though SAP has already worked upon tax summaries inside ALD, but there was no way to find out how they should work.
    One can only shout out loud that, at least with german laws, <b><i>ALD is no use for sales documents as long as it can't produce VAT sums</i></b>.
    <u><b>Here's a workaround:</b></u>
    1. Create three sum variables for each relevant vat group:
    - price before taxation (e.g. "PRICE")
    - price after taxation (e.g. "GROSS")
    - tax itself (e.g. "VAT")
    Example:
    Implementing two tax groups, create:
    @PRICE1,@PRICE2,@GROSS1,@GROSS2,@VAT1,@VAT2
    2. Use conditional accumulation for the sum variables:
    Example for a @GROSS1 variable:
    if( Belegzeile.Steuerdefinition_VatGroup.Code="A1" , Belegzeile.Preis_inkl__Steuer * Belegzeile.Menge , 0 )
    Sorry 'bout the german field names; I'm sure it'll be easy to translate.
    3. Create taxation summary in the footer of your table:
    - Add one line per tax group.
    - Use the corresponding sum variables to print out values.
    - Use one of the sum variables for definition of a print condition. Example:
    @GROSS1>0
    The corresponding VAT sum line will only be printed if there are amounts available in the current document.
    That's all!
    It's quite easy, but it requires static definition of known tax groups. Sum variables can only be numeric, so there's no way to extract the tax group names from the database for later use.
    However, to create a more generic template you can define the group names and codes by user variables. Usage of such "constants" could make adaption of form templates much easier (I use them for tax names and fstring$ format definitions).
    ====================================
    Extension:
    If you want to extract the vat percentage rates into sum variables you would have to expand the variable calculations as such (example for sum variable @PERC1):
    if(@PERC1=0 and Belegzeile.Steuerdefinition_VatGroup.Code="A1",Belegzeile.USt__Prozentsatz_pro_Zeile,0)
    @PERC_A1 will only be accumulated once and takes over a single desired value.
    <i>keywords: "advanced layout designer" tax taxation "tax summary" "vat summary" vat invoice legal</i>

  • Missing LiveCycle menu in SFP after install of ALD 9.0

    Hi,
    My computer was recently reimaged to Windows 7. I installed ALD 9.0. If I open the standalone Form Designer application it is fine, but in SFP (Layout tab), the LiveCycle menu is completely missing!  This means that in SFP I have no access to many features of ALD. Others in my organization have installed it similarly with no problems (same versions of Windows and ALD), and we havn't been able to determine what's different about my system. I have tried a few ideas I've found, such as changing my Windows display settings, but no luck so far.
    My desktop support and Basis people are looking into this, but I was wondering if anyone here had experienced a similar problem, and if so, how did you solve it?
    Thanks,
    Margaret

    Hi Ralph,
    It isn't solved yet here, but I have a workaround, so I haven't been actively chasing it. The following workaround works in ALD 9.0; I'm not sure if it works in 8.2. (9.0 is available from SAP in the downloads area.)
    The workaround is this: if you create or maintain a form, it will work. It's not corrupted in any way. The problem is if you need a palette that isn't displayed. If it isn't accessible via a context menu, what can you do? I solved this by opening the Form Designer as a standalone application (you should have a shortcut icon on your desktop, or look under Programs in your computer), and looking at the menus there (the menus work in the standalone version), and getting the hotkey combinations for the menu items that I need. Unfortunately not all items have hotkey combinations, but all the ones I've needed so far do. Then close the standalone, go back into SAP and open the layout in SFP, and use the hotkeys to open whatever palette you need.
    Finally, to get the form properties page, you can: select an object on your form; go to the Value tab in the object palette; there is a link labeled "Form Level Validation Settings...". This link will open the properties dialog, and you can set target version and other properties there.
    I hope this helps. But I sure hope someone comes along with a real solution - this workaround will let you work on a form, but it's kind of a pain!
    Margaret

  • Problem in PDF display after refreshing of page

    Hello All,
    I am facing a weird problem. I have created an adobe interactive form in which i have header and line item details of customer invoice. I have added a button and numeric field to add no of rows as lineitem at runtime. When i click on add rows button page is being refreshed but its not displaying any UI elements on the PDF. Infact PDF is not being displayed ie no any UI element.
    Please let me the solution for tjis or the root cause of the problem,
    I am using WAS7.0, NWDS 7.0 SP 14, ALD 7.1 , Adobe Reader 8.2, Form type ActiveX.
    ACF is installed with SP 22.
    Regards
    Sagar Ingalwar

    Hello Upendra,
    I know with 7.0 we can use zci ie native display type of form.Infact i tried my application with the same (native).
    It was working fine but ther is one problem due to which i needed to again switch to activex. In native i was not able to get the dropdown values using ISimpletypeModifiable, whereas i am able to do using activex.
    If you could  tell me any of the either solution that would be very excellent.
    In my add rows button javascript code i am calling an submitto sap button.
    Regards
    sagar

  • PDF preview and display issue : NWDS CE 7.1 SP05+ALD 7.1

    Hi All
    I am creating a webdynpro java application in NWDS 7.1 SP 05. This application has an interactive form ui element. The livecycle designer version is 7.1 and reader versions tried are 8 and 9.
    The issue is that the pdf preview in NWDS is blank and also I am getting blank white space instead of the form when i deploy the application on a browser.
    I have used NWDS 7.1, SP05 + ALD 7.1 combination on another system and there i can see the form in NWDS pdf preview.
    I am completely stuck, please let me know of any way out.
    Thanks
    Lisha

    Hi,
    Try to uninstall adobe life cycle designer and install it onceagain..
    Even we faced some times this problem, but better to use higher version of adobe life cycle designer like 8.0 whiuch will be compatible to your NWDS version...
    Hope this helps you in resolving the problem...
    Regards,
    Saleem

  • Crystal Reports setup problem (?)

    Hello,
    I have recently taken over the role of creating/updating our Crystal Reports and have of course installed the software on my PC just as is explained in the installation guide and have set up the ODBC datalink.
    I decided to leave it installed on the old user's PC until I got it working properly just in case I had any problems. Good job I did.
    The reports we create are used by a bespoke software called Access Supply Chain.
    When I create/modify a report on this newly installed instance, save it to our reports folder and reference it in Supply Chain, the report only blinks on-screen for a fraction of a second and then vanishes.
    If I then go to the old machine and open the report there and re-save, it works fine.
    I've checked settings between both machines and can't find anything that differs.; I'm possibly missing something very simple.
    Could anyone give me any clues as to what the problem is?
    Many thanks
    - Chris

    Chris,
    The forum that you have posted your question in is for questions related to the SAP Business One SDK.  Your question is related to the Crystal Report Writer.  You should post these types of questions in the Business Objects Forum here on SDN at
    https://www.sdn.sap.com/irj/boc
    or possibly here ...
    All about Printing & Reporting using ALD, PLD, XLR and Crystal Reports
    These two areas may get you better and faster results.
    Eddy

  • ALD stop working during a preview of sales order or deliveries

    Good morning
    I have a problem in printing sales orders or deliveries :
    I can run correctly the add-on ALD on every client but after I launch some previews of sales orders or deliveries I received, an ALD error, which stops working, and i have to exit from SAP and then enter again and  run ALD  if i want to use it.
    Our system details are:
    SAP BO 2005A sp01 PL39
    Advance Layout Designer PL 103
    Windows Server 2003 std ed. sp2
    Clients with Windows XP PRO sp03
    The issue happens when print preview all Deliveries/ Sales Orders.
    I also created a new simple ALD template and I set it as
    default. The issue didn't happen so frequently as with the old template.
    Anyway these problems with ALD started after we began using Zfax.
    So i decided to uninstall it, but the problem appeared again.
    Now i'm asking if anyone could help me about this.
    Thanks in advance

    Hi ,
    Pls install ALD gain if u can .
    This addon takes near about 300 mb of space and little bit slower the b1.
    rgds,
    Ansu
    Edited by: anshu srivastava on Feb 26, 2009 9:40 AM

  • Freight in ALD

    Hi there,
    we've got a problem to display the fright-lines in an ALD - Merketing Document.
    Our Customer is working with CU surcharges, freight an other conditions which are entered in the "Freight"-Box. So, for example, there will be 3 lines of "freight"
    - CU surchage
    - Freight
    - Other Conditions.
    In the PLD it is possible to display each row in a repeat-area. I didn't find any possibility to do so in the ALD.
    many, many thanks for help!!

    Hi Michael,
    In PLD, the expense fields are System Variables which means theyu2019re hardcoded.
    In ALD, thereu2019s no such predefined template. Therefore itu2019s not possible to draw the data directly to the layout template.
    You can try add UDF in document row level but itu2019s not an easy way.
    Hope it helps.
    Regards,
    Jacqueline Jiang
    SAP Business One Forums Team

  • Reader 9.0 - Reader 9.1 compatibility problem

    Hi all.
    We created an AIF for an offline scenario.
    The form works correctly for Adobe reader 9.0 users, while for adobe reader 9.1 users the form not works properly: 
    a precompiled form appears empty (same form opened with Reader 9.0 shows all data);
    for some users when close the form the Reader 9.1 crashes.
    Someone can help?
    Luca

    Hi luca,
    I have problem whit ALD
    I have version 7.1      
    after I made the upgrade to adobe Acrobat to 9 version  LiveCycle dump increasingly.
    message error:
    Runtime Errors         MESSAGE_TYPE_X
    Date and Time          15.05.2009 10:32:57
    What happened?
        The current application program detected a situation which really
        should not occur. Therefore, a termination with a short dump was
        triggered on purpose by the key word MESSAGE (type X).

  • A problem with threads

    I am trying to implement some kind of a server listening for requests. The listener part of the app, is a daemon thread that listens for connections and instantiates a handling daemon thread once it gets some. However, my problem is that i must be able to kill the listening thread at the user's will (say via a sto button). I have done this via the Sun's proposed way, by testing a boolean flag in the loop, which is set to false when i wish to kill the thread. The problem with this thing is the following...
    Once the thread starts excecuting, it will test the flag, find it true and enter the loop. At some point it will LOCK on the server socket waiting for connection. Unless some client actually connects, it will keep on listening indefinatelly whithought ever bothering to check for the flag again (no matter how many times you set the damn thing to false).
    My question is this: Is there any real, non-theoretical, applied way to stop thread in java safely?
    Thank you in advance,
    Lefty

    This was one solution from the socket programming forum, have you tried this??
    public Thread MyThread extends Thread{
         boolean active = true;          
         public void run(){
              ss.setSoTimeout(90);               
              while (active){                   
                   try{                       
                        serverSocket = ss.accept();
                   catch (SocketTimeoutException ste){
                   // do nothing                   
         // interrupt thread           
         public void deactivate(){               
              active = false;
              // you gotta sleep for a time longer than the               
              // accept() timeout to make sure that timeout is finished.               
              try{
                   sleep(91);               
              }catch (InterruptedException ie){            
              interrupt();
    }

  • A problem with Threads and MMapi

    I am tring to execute a class based on Game canvas.
    The problem begin when I try to Play both a MIDI tone and to run an infinit Thread loop.
    The MIDI tone "Stammers".
    How to over come the problem?
    Thanks in advance
    Kobi
    See Code example below:
    import java.io.IOException;
    import java.io.InputStream;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.lcdui.game.GameCanvas;
    import javax.microedition.media.Manager;
    import javax.microedition.media.MediaException;
    import javax.microedition.media.Player;
    public class MainScreenCanvas extends GameCanvas implements Runnable {
         private MainMIDlet parent;
         private boolean mTrucking = false;
         Image imgBackgound = null;
         int imgBackgoundX = 0, imgBackgoundY = 0;
         Player player;
         public MainScreenCanvas(MainMIDlet parent)
              super(true);
              this.parent = parent;
              try
                   imgBackgound = Image.createImage("/images/area03_bkg0.png");
                   imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
                   imgBackgoundY = this.getHeight() - imgBackgound.getHeight();
              catch(Exception e)
                   System.out.println(e.getMessage());
          * starts thread
         public void start()
              mTrucking = true;
              Thread t = new Thread(this);
              t.start();
          * stops thread
         public void stop()
              mTrucking = false;
         public void play()
              try
                   InputStream is = getClass().getResourceAsStream("/sounds/scale.mid");
                   player = Manager.createPlayer(is, "audio/midi");
                   player.setLoopCount(-1);
                   player.prefetch();
                   player.start();
              catch(Exception e)
                   System.out.println(e.getMessage());
         public void run()
              Graphics g = getGraphics();
              play();
              while (true)
                   tick();
                   input();
                   render(g);
          * responsible for object movements
         private void tick()
          * response to key input
         private void input()
              int keyStates = getKeyStates();
              if ((keyStates & LEFT_PRESSED) != 0)
                   imgBackgoundX++;
                   if (imgBackgoundX > 0)
                        imgBackgoundX = 0;
              if ((keyStates & RIGHT_PRESSED) != 0)
                   imgBackgoundX--;
                   if (imgBackgoundX < this.getWidth() - imgBackgound.getWidth())
                        imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
          * Responsible for the drawing
          * @param g
         private void render(Graphics g)
              g.drawImage(imgBackgound, imgBackgoundX, imgBackgoundY, Graphics.TOP | Graphics.LEFT);
              this.flushGraphics();
    }

    You can also try to provide a greater Priority to your player thread so that it gains the CPU time when ever it needs it and don't harm the playback.
    However a loop in a Thread and that to an infinite loop is one kind of very bad programming, 'cuz the loop eats up most of your CPU time which in turn adds up more delays of the execution of other tasks (just as in your case it is the playback). By witting codes bit efficiently and planning out the architectural execution flow of the app before start writing the code helps solve these kind of issues.
    You can go through [this simple tutorial|http://oreilly.com/catalog/expjava/excerpt/index.html] about Basics of Java and Threads to know more about threads.
    Regds,
    SD
    N.B. And yes there are more articles and tutorials available but much of them targets the Java SE / EE, but if you want to read them here is [another great one straight from SUN|http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html] .
    Edited by: find_suvro@SDN on 7 Nov, 2008 12:00 PM

  • J2ME problem with threads

    Hi all,
    I would like to ask you for a help. I need to write a small program at my university. I started to write a midlet which function would be to countdown time for sports activities. I woul like to start a new thread - the one that counts down - and at the same time make the main thread sleep. After the "countdown" thread finishes, the main thread wakes up and waits for user input. The problem is that when the "countdown" thread finishes his work, I've got Uncaught exception java/lang/NullPointerException. error and the midlet halts.
    Below you can find the code
    import java.lang.*;
    import java.util.*;
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    public class intervals extends MIDlet implements CommandListener
    public Display ekran;
    private SweepCanvas sweeper;
    private Form rundy;
    private TextField round0, round1, round2, round3, round4, round5, round6, round7, round8;
    private long czas,x;
    private Command exitCommand;
    private Command addRound;
    private Command delRound;
    private Command start;
    private TextField repeat;
    private Form odliczanie;
    private Alert ostrz;
    Licznik thread;
    String test;
    StringItem test1;
    int parz,i,j,k;
    static int l;
    int ilrund;
    int ilpowt;
    Item sec;
    long sec1;
    public intervals()
        rundy = new Form("Interwa&#322;y sportowe");
        exitCommand = new Command("Wyj&#347;cie", Command.EXIT, 2);
        addRound = new Command("Dodaj","Dodaj rund&#281;", Command.ITEM,1);
        delRound = new Command("Usu&#324;","Usu&#324; ostatni&#261; rund&#281;", Command.ITEM,1);
        start = new Command("Start", Command.ITEM,1);
        odliczanie = new Form("Odliczanie");
        TextField dodaj(TextField kolej)
            kolej=new TextField("Podaj czas (s) rundy "+parz,null, 4, TextField.NUMERIC);//stworzenie nowej instancji do wybierania czasu trwania rundy
            if(rundy.size()==0)
                rundy.insert(rundy.size(),kolej);
                else
                    rundy.insert(rundy.size()-1, kolej);
            return kolej;
        void odliczanie(TextField round)
            monitor m=new monitor();
            k=Integer.parseInt(round.getString());
            ekran.setCurrent(odliczanie);
            thread=new Licznik(k,odliczanie);
            thread.start();
            ekran.setCurrent(rundy);
    public void startApp()// throws MIDletStateChangeException
        rundy.deleteAll();
        repeat = new TextField("Podaj ilo&#347;&#263; powtórze&#324;",null,1,TextField.NUMERIC);
        rundy.addCommand(addRound);
        rundy.addCommand(exitCommand);
        rundy.setCommandListener(this);
        Canvas obrazek = new MyCanvas();
        ekran = Display.getDisplay(this);
        ekran.setCurrent(obrazek);
        czas=System.currentTimeMillis();
        while (System.currentTimeMillis()<czas+1000)
            continue;
        ekran.setCurrent(rundy);
    public void pauseApp()
    public void destroyApp(boolean unconditional)
        notifyDestroyed();
    public void commandAction(Command c, Displayable s)
        if (c == exitCommand)
            destroyApp(false);
            notifyDestroyed();
        else if(c==addRound)
            if(rundy.size()==0)//Sprawdzenie ilo&#347;ci elementów w celu poprawnego wy&#347;wietlania liczby rund w formie
                parz=1;
                else
                parz=rundy.size();
            switch(parz)
                case 1:
                    round0=dodaj(round0);break;
                case 2:
                    round1=dodaj(round1);break;
                case 3:
                   round2= dodaj(round2);break;
                case 4:
                    round3=dodaj(round3);break;
                case 5:
                    round4=dodaj(round4);break;
                default:
                    ostrz=new Alert("Uwaga","Maksymalna liczba rund wynosi 9", null, AlertType.INFO);
                    ostrz.setTimeout(3000);
                    ekran.setCurrent(ostrz);
            if(rundy.size()==1)
                rundy.append(repeat);
                rundy.addCommand(start);
            rundy.addCommand(delRound);
        else if(c==delRound)
            if(rundy.size()!=0)
                rundy.delete(rundy.size()-2);
                if (rundy.size()==1)
                    rundy.deleteAll();
                if(rundy.size()==0)
                    rundy.removeCommand(delRound);
                    rundy.removeCommand(start);
        else if(c==start)
            ilrund=rundy.size()-1;
            if(this.repeat.size()>0)
                ilpowt=Integer.parseInt(this.repeat.getString());
            ekran = Display.getDisplay(this);
            for (i=1; i<=ilpowt;i++)
                odliczanie= new Form("Odliczanie");
                 for (j=0;j<ilrund;j++)
                    switch(j)
                         case 0:
                             odliczanie(round0);
                             break;
                         case 1:
                             odliczanie(round1);
                             break;
                         case 2:
                             odliczanie(round2);
                             break;
                         case 3:
                             odliczanie(round3);
                             break;
                         case 4:
                             odliczanie(round4);
                             break;
                         case 5:
                             odliczanie(round5);
                             break;
                         case 6:
                             odliczanie(round6);
                             break;
                         case 7:
                             odliczanie(round7);
                             break;
                         case 8:
                             odliczanie(round8);
                             break;
    class Licznik extends Thread
        int czas1,k;
        Form forma;
        monitor m;
        public Licznik(int k,Form formap)
            czas1=k;
            forma=formap;
        public synchronized void run()
            while(czas1>0)
                forma.deleteAll();
                forma.append("Czas pozosta&#322;y (s): "+czas1);
                try{Thread.sleep(1000);} catch(InterruptedException e){e.printStackTrace();}
                czas1--;
            if(czas1<=0)
                m.put();
        }and monitor class
    public class monitor
    boolean busy=false;
    synchronized void get()
        if(!busy)
            try
                wait();
            }catch(InterruptedException e){e.printStackTrace();}
        notify();
    synchronized void put()
        if(busy)
            try
            wait();
            }catch(InterruptedException e){e.printStackTrace();}
        busy=true;
        notify();
    }Can anybody help me with this?

    Groovemaker,
    Your Licznik class has a member m of type monitor, which has not been instantiated (in other words is null) hence, when calling m.put() you get NullPointerException. Please also mind, that using Thread.sleep(1000) is not an accurate way of measuring time.
    If I may, please use recommended for Java class naming conventions - some of your names use lower case, while other don't which is confusing to the reader.
    Daniel

  • Problem with threads within applet

    Hello,
    I got an applet, inside this applet I have a singleton, inside this singleton I have a thread.
    this thread is running in endless loop.
    he is doing something and go to sleep on and on.
    the problem is,
    when I refresh my IE6 browser I see more than 1 thread.
    for debug matter, I did the following things:
    inside the thread, sysout every time he goes to sleep.
    sysout in the singleton constructor.
    sysout in the singleton destructor.
    the output goes like this:
    when refresh the page, the singleton constructor loading but not every refresh, sometimes I see the constructor output and sometimes I dont.
    The thread inside the singleton is giving me the same output, sometime I see more than one thread at a time and sometimes I dont.
    The destructor never works (no output there).
    I don't understand what is going on.
    someone can please shed some light?
    thanks.
    btw. I am working with JRE 1.1
    this is very old and big applet and I can't convert it to something new.

    Ooops. sorry!
    I did.
         public void start() {
         public void stop() {
         public void destroy() {
              try {
                   resetAll();
                   Configuration.closeConnection();
                   QuoteItem.closeConnection();
              } finally {
                   try {
                        super.finalize();
                   } catch (Throwable e) {
                        e.printStackTrace();
         }

  • Problem with Threads and a static variable

    I have a problem with the code below. I am yet to make sure that I understand the problem. Correct me if I am wrong please.
    Code functionality:
    A timer calls SetState every second. It sets the state and sets boolean variable "changed" to true. Then notifies a main process thread to check if the state changed to send a message.
    The problem as far I understand is:
    Assume the timer Thread calls SetState twice before the main process Thread runs. As a result, "changed" is set to true twice. However, since the main process is blocked twice during the two calls to SetState, when it runs it would have the two SetState timer threads blocked on its synchronized body. It will pass the first one, send the message and set "changed" to false since it was true. Now, it will pass the second thread, but here is the problem, "changed" is already set to false. As a result, it won't send the message even though it is supposed to.
    Would you please let me know if my understanding is correct? If so, what would you propose to resolve the problem? Should I call wait some other or should I notify in a different way?
    Thanks,
    B.D.
    Code:
    private static volatile boolean bChanged = false;
    private static Thread objMainProcess;
       protected static void Init(){
            objMainProcess = new Thread() {
                public void run() {
                    while( objMainProcess == Thread.currentThread() ) {
                       GetState();
            objMainProcess.setDaemon( true );
            objMainProcess.start();
        public static void initStatusTimer(){
            if(objTimer == null)
                 objTimer = new javax.swing.Timer( 1000, new java.awt.event.ActionListener(){
                    public void actionPerformed( java.awt.event.ActionEvent evt){
                              SetState();
        private static void SetState(){
            if( objMainProcess == null ) return;
            synchronized( objMainProcess ) {
                bChanged = true;
                try{
                    objMainProcess.notify();
                }catch( IllegalMonitorStateException e ) {}
        private static boolean GetState() {
            if( objMainProcess == null ) return false;
            synchronized( objMainProcess ) {
                if( bChanged) {
                    SendMessage();
                    bChanged = false;
                    return true;
                try {
                    objMainProcess.wait();
                }catch( InterruptedException e ) {}
                return false;
        }

    Thanks DrClap for your reply. Everything you said is right. It is not easy to make them alternate since SetState() could be called from different places where the state could be anything else but a status message. Like a GREETING message for example. It is a handshaking message but not a status message.
    Again as you said, There is a reason I can't call sendMessage() inside setState().
    The only way I was able to do it is by having a counter of the number of notifies that have been called. Every time notify() is called a counter is incremented. Now instead of just checking if "changed" flag is true, I also check if notify counter is greater than zero. If both true, I send the message. If "changed" flag is false, I check again if the notify counter is greater than zero, I send the message. This way it works, but it is kind of a patch than a good design fix. I am yet to find a good solution.
    Thanks,
    B.D.

  • Problem with threads running javaw

    Hi,
    Having a problem with multi thread programming using client server sockets. The program works find when starting the the application in a console using java muti.java , but when using javaw multi.java the program doesnt die and have to kill it in the task manager. The program doesnt display any of my gui error messages either when the server disconnect the client. all works find in a console. any advice on this as I havent been able to understand why this is happening? any comment would be appreciated.
    troy.

    troy,
    Try and post a minimum code sample of your app which
    does not work.
    When using javaw, make sure you redirect the standard
    error and standard output streams to file.
    Graeme.Hi Graeme,
    I dont understand what you mean by redirection to file? some of my code below.
    The code works fine under a console, code is supposed to exit when the client (the other server )disconnects. the problem is that but the clientworker side of the code still works. which under console it doesnt.
    public class Server{
    ServerSocket aServerSocket;
    Socket dianosticsSocket;
    Socket nPortExpress;
    ClientListener aClientListener;
    LinkedList queue = new LinkedList();
    int port = 0;
    int clientPort = 0;
    String clientName = null;
    boolean serverAlive = true;
    * Server constructor generates a server
    * Socket and then starts a client threads.
    * @param aPort      socket port of local machine.
    public Server(int aPort, String aClientName, int aClientPort){
    port = aPort;
    clientName = aClientName;
    clientPort = aClientPort;
    try{
    // create a new thread
    aServerSocket = new ServerSocket(port) ;
    // connect to the nPortExpress
    aClientListener = new ClientListener(InetAddress.getByName(clientName), clientPort, queue,this);
    // aClientListener.setDaemon(true);
    aClientListener.start();
    // start a dianostic port
    DiagnosticsServer aDiagnosticsServer = new DiagnosticsServer(port,queue,aClientListener);
    // System.out.println("Server is running on port " + port + "...");
    // System.out.println("Connect to nPort");
    catch(Exception e)
    // System.out.println("ERROR: Server port " + port + " not available");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Server port " + port + " not available", JOptionPane.ERROR_MESSAGE);
    serverAlive = false;
    System.exit(1);
    while(serverAlive&&aClientListener.hostSocket.isConnected()){
    try{
    // connect the client
    Socket aClient = aServerSocket.accept();
    //System.out.println("open client connection");
    //System.out.println("client local: "+ aClient.getLocalAddress().toString());
    // System.out.println("client localport: "+ aClient.getLocalPort());
    // System.out.println("client : "+ aClient.getInetAddress().toString());
    // System.out.println("client port: "+ aClient.getLocalPort());
    // make a new client thread
    ClientWorker clientThread = new ClientWorker(aClient, queue, aClientListener, false);
    // start thread
    clientThread.start();
    catch(Exception e)
    //System.out.println("ERROR: Client connection failure");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Client connection failure", JOptionPane.ERROR_MESSAGE);
    }// end while
    } // end constructor Server
    void serverExit(){
         JOptionPane.showMessageDialog(null, "Server ","ERROR: nPort Failure", JOptionPane.ERROR_MESSAGE);
         System.exit(1);
    }// end class Server
    *** connect to another server
    public class ClientListener extends Thread{
    InetAddress hostName;
    int hostPort;
    Socket hostSocket;
    BufferedReader in;
    PrintWriter out;
    boolean loggedIn;
    LinkedList queue;      // reference to Server queue
    Server serverRef; // reference to main server
    * ClientListener connects to the host server.
    * @param aHostName is the name of the host eg server name or IP address.
    * @param aHostPort is a port number of the host.
    * @param aLoginName is the users login name.
    public ClientListener(InetAddress aHostName, int aHostPort,LinkedList aQueue,Server aServer)      // reference to Server queue)
    hostName = aHostName;
    hostPort = aHostPort;
    queue = aQueue;
    serverRef = aServer;      
    // connect to the server
    try{
    hostSocket = new Socket(hostName, hostPort);
    catch(IOException e){
    //System.out.println("ERROR: Connection Host Failed");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Connection to nPort Failed", JOptionPane.ERROR_MESSAGE);     
    System.exit(0);
    } // end constructor ClientListener
    ** multi client connection server
    ClientWorker(Socket aSocket,LinkedList aQueue, ClientListener aClientListener, boolean diagnostics){
    queue = aQueue;
    addToQueue(this);
    client = aSocket;
    clientRef = aClientListener;
    aDiagnostic = diagnostics;
    } // end constructor ClientWorker
    * run method is the main loop of the server program
    * in change of handle new client connection as well
    * as handle all messages and errors.
    public void run(){
    boolean alive = true;
    String aSubString = "";
    in = null;
    out = null;
    loginName = "";
    loggedIn = false;
    while (alive && client.isConnected()&& clientRef.hostSocket.isConnected()){
    try{
    in = new BufferedReader(new InputStreamReader(client.getInputStream()));
    out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
    if(aDiagnostic){
    out.println("WELCOME to diagnostics");
    broadCastDia("Connect : diagnostics "+client.getInetAddress().toString());
    out.flush();
    else {       
    out.println("WELCOME to Troy's Server");
    broadCastDia("Connect : client "+client.getInetAddress().toString());
         out.flush();
    String line;
    while(((line = in.readLine())!= null)){
    StringTokenizer aStringToken = new StringTokenizer(line, " ");
    if(!aDiagnostic){
    broadCastDia(line);
    clientRef.sendMessage(line); // send mesage out to netExpress
    out.println(line);
    out.flush();
    else{
    if(line.equals("GETIPS"))
    getIPs();
    else{
    clientRef.sendMessage(line); // send mesage out to netExpress
    out.println(line);
    out.flush();
    } // end while
    catch(Exception e){
    // System.out.println("ERROR:Client Connection reset");
                             JOptionPane.showMessageDialog(null, (e.toString()),"ERROR:Client Connection reset", JOptionPane.ERROR_MESSAGE);     
    try{
    if(aDiagnostic){
    broadCastDia("Disconnect : diagnostics "+client.getInetAddress().toString());
    out.flush();
    else {       
    broadCastDia("Disconnect : client "+client.getInetAddress().toString());
         out.flush();
    // close the buffers and connection;
    in.close();
    out.close();
    client.close();
    // System.out.println("out");
    // remove from list
    removeThreadQueue(this);
    alive = false;
    catch(Exception e){
    // System.out.println("ERROR: Client Connection reset failure");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Client Connection reset failure", JOptionPane.ERROR_MESSAGE);     
    }// end while
    } // end method run
    * method run - Generates io stream for communicating with the server and
    * starts the client gui. Run also parses the input commands from the server.
    public void run(){
    boolean alive = true;
    try{
    // begin to life the gui
    // aGuiClient = new ClientGui(hostName.getHostName(), hostPort, loginName, this);
    // aGuiClient.show();
    in = new BufferedReader(new InputStreamReader(hostSocket.getInputStream()));
    out = new PrintWriter(new OutputStreamWriter(hostSocket.getOutputStream()));
    while (alive && hostSocket.isConnected()){
    String line;
    while(((line = in.readLine())!= null)){
    System.out.println(line);
    broadCast(line);
    } // end while
    } // end while
    catch(Exception e){
    //     System.out.println("ERRORa Connection to host reset");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Connection to nPort reset", JOptionPane.ERROR_MESSAGE);
    try{
    hostSocket.close();
         }catch(Exception a){
         JOptionPane.showMessageDialog(null, (a.toString()),"ERROR: Exception", JOptionPane.ERROR_MESSAGE);
    alive = false;
    System.exit(1);
    } // end method run

Maybe you are looking for

  • NameNotFoundException in JMS Sender Adapter

    Hi, I am doing JMS to File Scenario. In the JMS Sender Adapter, I am getting the following error. Channel error occurred. Detailed error (if any) : com.sap.aii.adapter.jms.api.connector.ConnectorException: Error looking up connection factoryQueueConn

  • Music doesn't play properly

    My music tends to stop at random times and then continue for the rest of the song with silence. I have correctly downloaded all the songs and albums from iTunes, and when the songs do play, some just morph into other songs ie. they stop as above but

  • Accounts determination error is coming while create billing.

    Hi Experts, Accounts determination error is coming while create billing for Account Assignment Group A4 . In some cases only this error is appearing . I m a ABAPer I got this case and I  m debugging the code  . Can anyone  suggest me what all the thi

  • DW CC 2014 Issues

    I decided to "Upgrade" DW to CC 2014. First problem. This is NOT AN UPGRADE! This is a new installation. The button in Creative Cloud should say 'Install' and not 'Upgrade'. This is extremely irritating! Please give your customers credit for having a

  • 9i release

    hello i want to know if oracle have make a Oracle9i Release 2 (9.2.0.4) for windows? thanks for your reply