Control the socket retuned by ServerSocket.accept()

Hi,
I'm writing a server side application that must run behind a firewall.
In order to allow the clients to connect the server I opened a port in the firewall.
The problem is that the accpet() uses a random port for the newly created port.
And this port isn't opened in the firewall.
Is there away I can force the accept() method to use a specific port of the newly created socket?
Thanks,
Guy

The problem is that the accpet() uses a random port
for the newly created port.
And this port isn't opened in the firewall.No it doesn't, it uses the same port as the server socket was listening to. It is probably the client which is using a random outbound port. If the firewall is trying to control the client's port number it shouldn't.

Similar Messages

  • SSL Server socket: controlling the alias for the server certificate ?

    Hi,
    Could anyone please clear up the following ?
    When you create an SSL server socket, it needs a certificate (to prove its identity), and for this it relies on a keystore:
    System.setProperty("javax.net.ssl.keyStore", "c:/mystore");
    My question is, what if the keystore contains several certificates ?
    Eg:
    keytool -import -alias AAA -file cert1.cer -keystore mystore
    keytool -import -alias BBB -file cert2.cer -keystore mystore
    Which certificate would the server use ?
    And is there a way to control the alias it would use ?
    Thanks :)

    This is a very good question and one that should be described in the Guide to Features. See javax.net.ssl.X509KeyManager.chooseServerAlias(). It does a search looking for aliases of a given key type, i.e. one of the ones the peer understands, & which are trusted by the peer. Any alias which the peer can accept will do.

  • Problem with the socket and the standard output stream

    Hy, I have a little problem with a socket program. It has the server and the client. The problem is that the client at one point in the program, cannot print messages in the console.
    My program does the next: the server waits connections, when a client connects to it, the server gets outputstream to the socket and writes two strings on it. Meanwhile, the client gets the inputstream to the socket and reads on it with a loop the two strings written by the server . The strings are printed by the client in the console. The problem starts here; once the read strings are printed ,I mean, after the loop, there are other System.out.println in the client but the console doesnt print anything . It curious that only when I comment on the server code the line that says: "br.readLine()" just before the catch, the client prints all the System.out.println after the loop but why?
    Here is the code:
    Server code:
    public class MyServerSocket {
    public MyServerSocket() {
    try{
    ServerSocket server= new ServerSocket(2000);
    System.out.println("servidor iniciado");
    Socket client=server.accept();
    System.out.println("Client connected");
    OutputStream os=client.getOutputStream();
    PrintWriter pw= new PrintWriter(os);
    String cadena1="cadena1";
    String cadena2="cadena2";
    pw.println(cadena1);
    pw.println(cadena2);
    pw.flush();
    InputStream is=client.getInputStream();
    InputStreamReader isr= new InputStreamReader(is);
    BufferedReader br= new BufferedReader(isr);
    br.readLine(); //If a comment this line, the client prints after the loop, all the System.out....
    catch (IOException e) {
    // TODO: handle exception
    public static void main(String[] args) {
    new MyServerSocket
    Client code:
    public class MyClientSocket {
    public MyClientSocket () {
    try{
    Socket client= new Socket("localhost",2000);
    InputStream is=client.getInputStream();
    InputStreamReader isr= new InputStreamReader(is);
    BufferedReader br= new BufferedReader(isr);
    String read;
    while((read=br.readLine())!=null){
    System.out.println(read);
    //These messages are not printed unless I comment the line I talked about in the server code
    System.out.println("leido");
    System.out.println("hola");
    }catch (IOException e) {
    public static void main(String[] args) {
    new MyClientSocket
    }

    You are right but with this program the loop ends. As you see, the first class, the Server, writes to the socket one text file. The second class, the client, reads the text file in his socket written by the server and writes it to a file in his machine.
    NOTE: The loop in the client ends and the server doesnt make any close() socket or shutdownOutput() .
    public class ServidorSocketFicheromio {
         public ServidorSocketFicheromio() {
    try{
         ServerSocket servidor= new ServerSocket(2000);
         System.out.println("servidor iniciado");
         Socket cliente=servidor.accept();
         System.out.println("cliente conectado");
         OutputStream os=cliente.getOutputStream();
         PrintWriter pw= new PrintWriter(os);
         File f = new File("c:\\curso java\\DUDAS.TXT");
         FileReader fr= new FileReader(f);
         BufferedReader br= new BufferedReader(fr);
         String leido;
         while((leido=br.readLine())!=null){
              pw.println(leido);
         pw.flush();
         }catch (IOException e) {
         * @param args
         public static void main(String[] args) {
              new ServidorSocketFicheromio();
    public class ClienteSocketFicheromio {
         public ClienteSocketFicheromio() {
    try{
         Socket cliente= new Socket("localhost",2000);
         File f = new File("G:\\pepe.txt");
         FileWriter fw= new FileWriter(f);
         PrintWriter pw= new PrintWriter(fw);
         InputStream is=cliente.getInputStream();
         InputStreamReader isr= new InputStreamReader(is);
         BufferedReader br= new BufferedReader(isr);
         String leido;
         while((leido=br.readLine())!=null){
              pw.println(leido);
              System.out.println(leido);
              System.out.println("leido");
              System.out.println("hola");
              pw.flush();
         }catch (IOException e) {
         public static void main(String[] args) {
         new ClienteSocketFicheromio();/
    }

  • Why the socket is closing

    Hi ,
    I would like to send the MimeMessage object via socket connection. To do do that i have written the following code fragment
    Socket s = new Socket("localhost",3200);
    OutputStream os = s.getOutputStream();
    MimeMessage mimemessage
    //some code to create MimeMessage
    mimemessage.writeTo(os);
    os.close() // this is important step
    In this code fragment if i didnt close the output stream the message is not being delivered to the server side. But when i close the output stream it is closing the socket connection with the stream connection.
    What i neeed is i will be sending mimemessage objects via socke asynchronously. For that purpose i would like to keep the outputstream of the socket keep opent always. But how can i send the mimemessage object via socket without closing the stream.
    I tried os.flush() also. but no result.
    Please help me.
    thanks in advance,
    Sridhar reddy .R

    I am not using any server n server is simple java server socket.
    here is the code for server
    public class MyServer extends Thread
    public static void main(String[] a)
    ServerSocket sss= newServerSocket(3200);
    while(true)
    Socket s = ss.accept();
    new MyServer(s).start();
    public MyServer(Socket socket)
    this.socket = socket;
    is = socket.getInputStream();
    public void run()
    while(true)
    Properties prop = System.getProperties();
    Session session = Session.getInstance(prop, null);
    MimeMessage mimemessage = new MimeMessage(session,objectStream);
    // do some operations on this message

  • Socket.getOutputStream must precede the socket.getInputStream?!? Why?

    This is server code.......
    import java.io.*;
    import java.net.*;
    import java.util.*;
    public class DateServer extends Thread {
       private ServerSocket dateServer;
       public static void main(String argv[]) throws Exception {
         new DateServer();
       public DateServer() throws Exception {
         dateServer = new ServerSocket(3000);
         System.out.println("Server listening on port 3000.");
         this.start();
       public void run() {
         while(true) {
           try {
            System.out.println("Waiting for connections.");
            Socket client = dateServer.accept();
            System.out.println("Accepted a connection from: "+
    client.getInetAddress());
            Connect c = new Connect(client);
           } catch(Exception e) {}
    class Connect extends Thread {
       private Socket client = null;
       private ObjectInputStream ois = null;
       private ObjectOutputStream oos = null;
       public Connect() {}
       public Connect(Socket clientSocket) {
         client = clientSocket;
         try {
          ois = new ObjectInputStream(client.getInputStream());
          oos = new ObjectOutputStream(client.getOutputStream());
         } catch(Exception e1) {
             try {
                client.close();
             }catch(Exception e) {
               System.out.println(e.getMessage());
             return;
         this.start();
       public void run() {
          try {
             oos.writeObject(new Date());
             oos.flush();
             // close streams and connections
             ois.close();
             oos.close();
             client.close();
          } catch(Exception e) {}
    }This is client code....
    import java.io.*;
    import java.net.*;
    import java.util.*;
    public class DateClient {
       public static void main(String argv[]) {
          ObjectOutputStream oos = null;
          ObjectInputStream ois = null;
          Socket socket = null;
          Date date = null;
          try {
            // open a socket connection
            socket = new Socket("127.0.0.1", 3000);
            // open I/O streams for objects
            oos = new ObjectOutputStream(socket.getOutputStream());
            ois = new ObjectInputStream(socket.getInputStream());
              System.out.println( "BAU!" );
            // read an object from the server
            date = (Date) ois.readObject();
            System.out.print("The date is: " + date);
            oos.close();
            ois.close();
          } catch(Exception e) {
            System.out.println(e.getMessage());
    }OK.
    Those work just fine. Now if you put socket.getInputStream before the socket.getOutputStream then it hangs!
    Any ideea why this happens and why is not documented... I just lost tow hour tring to figure it out why my program just hangs. After I have set the order as In the example above all works....
    If anyone knows why please share your knowledge...
    Hope this will save others a lot of lost time.

    The order matters because the ObjectOutputStream constructor writes a stream header and the ObjectInputStream constructor reads the header.
    If both ends of the conversation do "new ObjectInputStream()" they both forever wait for the other end to write the header. So one end needs to create the output stream first and the input stream second, and the other end in the other order (or do them in different threads.)
    If it isn't documented it should be IMHO. Re-check the javadocs; if it isn't mentioned file a bug report to Sun. There is a bug parade link on http://java.sun.com/ somewhere.

  • Extending the Socket class...

    I need some help. The class below, SimpleSocket, extends the built-in
    Socket class and adds two methods to it. These methods are meant to
    make the class a bit more user-frienly but simplifying the reading-from
    and writing-to a Socket object. Here it is:
    bq. import java.net.*; \\ import java.io.*; \\ public class SimpleSocket extends Socket { \\ BufferedReader in; \\ PrintWriter out; \\ public void println(String line) throws IOException \\ { \\ if (out == null) { out = new PrintWriter(this.getOutputStream(), true); } \\ out.println(line); \\ } \\ public String readLine() throws IOException \\ { \\ if (in == null) { in = new BufferedReader( new InputStreamReader(this.getInputStream())); } \\ return in.readLine(); \\ } \\ }
    If I want to create a new SimpleSocket, it's easy - I can instantiate it like a normal Socket:
    bq. SimpleSocket socket = new SimpleSocket(host,port); // assume host & port have been defined
    Now, lets say I have a Socket object that I didn't created - for
    example, a Socket returned from the ServerSocket class - like this:
    bq. ServerSocket serverSocket = new ServerSocket(port); \\ Socket clientSocket = serverSocket.accept(); // returns the socket for communicating with a client
    Now that I have a regular Socket object, is there some what to
    "upgrade" it to a SimpleSocket? Something like this: (pseudocode):
    bq. clientSocket.setClass(SimpleSocket); // this is pseudocode
    Or, could I make a SimpleSocket constructor that accepted a Socket
    object as a parameter and then used it instead of creating a new
    object? Like this: (psuedocode):
    bq. public SimpleSocket(Socket S) \\ { \\ super = S; // this is pseudocode \\ }
    Any ideas would be greatly appreciated.
    Lindsay
    Edited by: lindsayvine on Sep 15, 2007 10:50 PM

    lindsayvine wrote:
    Ok, this makes sense and this is what I will probably do. However, there are three limitations to this method that I don't like:
    1. I would like to be able to pass the SimpleSocket object around as a normal Socket. I would like SimpleSocket to be castable to a Socket.Would you? What for? Are you sure? Would input and output streams not be better objects to pass around? You might well have the requirement you say you have, but I say it's an assumption to be challenged, at the very least
    2. I would like every method of the Socket object to be available - this would means that I have to rewrite out every method in SimpleSocket - instead of just saying "hey SimpleSocket, you should have every method Socket has"Yep. But using inheritance simply to avoid some typing is no reason to use inheritance. This is all providing that you need to have every method available. Remember, if any dependent code needs the underlying socket object, your interface can always expose it
    3. If I do write out every method, but then the Socket object gets new methods in future versions of Java, I will have to add the new ones.Likewise, in the case of such a change to java.net.Socket, your subclass has a very real chance of breaking. Again, consider if your code needs to exactly replicate everything a Socket does
    Can you think of any way around these problems?
    Sure. Re-think your design

  • PLEASE:: FTP Connection type BINARY with the SOCKET

    hi all,
    using SOCKET s in the FTP how can i set the Binary mode transfer.
    i tried the "TYPE" command with the frist argument as "I"....but :(
    Please help me.
    Regards,
    manish

    Socket clientSocket = serverSocket.accept();
    Is used when you want to receive data.
    ... after seding the command it Hangs
    Suggenst you want to send data.
    The fact that Socket clientSocket = serverSocket.accept(); is because what this
    command does is wait untill some client sends you a connection request and when
    that happens accept that connection and create a socket for it.
    When you want to send data you don't need a ServerSocket.
    Socket s = new Socket();
    http://javaalmanac.com/cgi-bin/search/find.pl?l=split&words=socket
    I could not find any samples using ftp, I guess the URL object would wrap your
    messages according to the protocol you want to use and is a better candidate for ftp
    than the socket
    http://www.nsftools.com/tips/JavaFtp.htm

  • Distinguishing ServerSocket.accept() exceptions

    I've a multi-threaded server, and one of its threads has a ServerSocket on which it repeatedly calls accept(). Because this call blocks, when I want the thread to terminate nicely I have another thread call close() on that ServerSocket. This works nicely so far.
    The problem I face is that ServerSocket.accept() can presumably also throw an exception if a legitimate attempt to accept an incoming connection fails. In that case I don't want the thread to terminate, I just want it to shrug it off and keep trying to accept new connections.
    Right now I'm handling this by setting a boolean value in the class that manages the ServerSocket just before calling close() on it, but I was wondering if there's a proper way to distinguish between the exception that gets thrown if the ServerSocket is closed and the exception that gets thrown if the attempt to accept a new connection failed. The JavaDoc doesn't say.
    Any pointers? Thanks,
    Richard 'Tony' Goold

    I put my server sockets in a thread. that way, if an exception occurs, then it just kills the thread, not the app.

  • Setting the traffic class in ServerSocket

    Hi all,
    in a ServerSocket I want to mark the dscp fields of the packets which are flowing through the client. I set the traffic class field as follows:
    Socket inSock = serverSocket.accept();
    inSock.setTrafficClass(64);
    but this has a problem that the first packet sent by the inSock cannot be marked. This occurs because the first packet is sent in the accept() method, but I set the traffic class after this packet is sent. Then do you know any solution to set the tos as the default (set before the first packet) option for all sockets accepted by a ServerSocket.
    I have some very workaround solutions such as implementing the SocketImpl and etc.But I want a KISS (Keep it simple stupid).
    Thanks.

    Yes thanks for your offer it would be good approach. but this arouses a new problem that my ServerSocket are created by a factory and I need to find a transparent solution in which for all ServerSocketFactory objects my solution works well. Let's see the example.
    MyChannel(ServerSocketFactory f) {
    ServerSocket serverSock = f.createServerSocket(param1, param2, ....);
    Socket inSock = serverSock.accep();
    In this case how can I morph the serverSock instance to my MySpecialServerSocket object for example.
    Indeed I need only overriding accept method, and I need this to do for an instance not an object.
    Do you know any way to do it?
    For example we can do a thing as follows:
    MyObject ob = new MyObject() {
    public overridenMethod() {
    };

  • Need of closing the Socket to complete read at client

    Hi all,
    I have aproblem of reading a byte array from a socketconnection.
    My code is work but there is a small issue.
    Basically my problem is there is a need of closing the socket at the server to complete the reading of the byte array at client
    following is the server code which write the bytearray.
    ServerSocket  serversocket = new ServerSocket(Integer.parseInt(resources.getString("PORT")));
    Socket clientSocket = s.getServersocket().accept();
    DataOutputStream dt = new DataOutputStream(clientSocket.getOutputStream());
    dt.write(getImageasByteArray());     // getImageasByteArray returns a byte array
    //clientSocket.close();          // if not close clientSocket reading of the byte array not worksAs I mentioned above if the clientSocket is not closed the reading of the byte not completed at the client.
    client code which read the byte array
    SocketConnection sock = (SocketConnection) Connector.open("socket://" + hostname);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    InputStream inputStream = sock.openInputStream();
    int c = 0;
    while ((c = inputStream.read()) != -1)
         baos.write(c);
    System.out.println("read complete"); // this read complete never execute if not clientSocket is closed at serverI can't close the clientSocket because there are several threads at server some reads incoming commands and some write based on the commands.
    so please help me
    thank You

    Thank You again for answering
    my client is a j2me platform and it print this stackrace
    my code
    DataOutputStream dt = new DataOutputStream(clientSocket.getOutputStream());
    dt.write(ImageUtil.getImageasByteArray(img).length);
    dt.write(ImageUtil.getImageasByteArray(img));   //send byte array
    DataInputStream in = new DataInputStream(sock.openInputStream());    // openInputStream not getinputStream
    int length = in.readInt();
    System.out.println("read length=" + length);
    byte[] arr = new byte[length];  // read size
    in.readFully(arr); 
    java.lang.NegativeArraySizeException
            at net.chamika.mobility.client.CanvasKey.keyPressed(CanvasKey.java:90)
            at javax.microedition.lcdui.Canvas.callKeyPressed(Canvas.java:1121)
            at javax.microedition.lcdui.Display$DisplayAccessor.keyEvent(Display.java:2209)
            at javax.microedition.lcdui.Display$DisplayManagerImpl.keyEvent(Display.java:2952)
            at com.sun.midp.lcdui.DefaultEventHandler.keyEvent(DefaultEventHandler.java:249)
            at com.sun.midp.lcdui.AutomatedEventHandler.keyEvent(AutomatedEventHandler.java:620)
            at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(DefaultEventHandler.java:699)
            at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(DefaultEventHandler.java:608)server ends arrays size as 5340
    client read it as -587212545
    Please help me.

  • Problem with ServerSocket.accept

    Hi, I'm from Italy so I apologize for my English.
    The problem is this, I created a separated Thread to listen the connections that come from the various clients, when it receive a connection it creates a new Thread to manage the connection.
    The problem is that I need to stop the Thread (the one that look for new connetions), whenever I need it, but how can i do it if the method ServerSocket.accept(); stop the execution of the thread.
    The listener of new connections extends Thread and this is the run method overridden.
    public void run() {
         ServerSocket ss;
         Server myServer; /* Another class that extends Thread to manage the connection */
         while (true) {
              try {
                   ss = new ServerSocket(port, queueLength);
                   Socket sd = ss.accept();
                   myServer = new Server(sd);
                   myServer.start();
              catch (IOException e) {
    }

    public void run() {
        ServerSocket ss;
        Server myServer;
        /* Another class that extends Thread to manage the connection */
        while (true) {
            try {
                ss = new ServerSocket(port, queueLength);
                Socket sd = ss.accept();
                myServer = new Server(sd);
                myServer.start();
            catch (IOException e) {
    [\code]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Allow the user to control the width of the edit forum post input box

    I would like to control the width of of the edit-forum post input box.  This could be:
    automatically adjust the width of the box so that the box doesn't run off the right edge of the window.
    have a user global preference to set the preferred width
    at least, allow the user to change the width via the change size icon.  The three horizontal bars at the lower left of the input box. You can adjust the vertical dimension, but not the horizontal. TenFourFox 4.0.1. This is probably being blocked for some obscure reason.
    Here is an example of an over extended right margin:
    Curiously enough, the "software" let's me adjust the width & height of the add reason to edit text, but not adjust the width of the more important edit text box.
    Robert

    Testing
    Standard Reply box can be height adjusted but not width.
    Same with Advanced Editor
    No Adjustment at all in HTL Editor
    Edit.
    The Edit uses the Advanced Editor
    Only Height Adjustment again.
    I do seem to remember someone posting about the width and saying they could drag it over the edge of the right hand edge (Into the grey surround)
    This may have been a post in the lounge.
    It didn't actually try it at the time but have played with it since and have not seen it.
    Maybe it is something they "Fixed" in both senses of the word.
    Second edit.
    I can't alter the box that currently reads "Message Edited by:- ..."
    I also can't get this box to accept New lines  (they appear in the box but don't post that way)
    Corrected Spelling
    9:51 PM      Wednesday; May 11, 2011
    Please, if posting Logs, do not post any Log info after the line "Binary Images for iChat"
     G4/1GhzDual MDD (Leopard 10.5.8)
     MacBookPro 2Gb( 10.6.7)
     Mac OS X (10.6.7),
    "Limit the Logs to the Bits above Binary Images."  No, Seriously
    Message was edited by: Ralph Johns (UK)
    Message was edited by: Ralph Johns (UK)
    and new line with a line space as well

  • How to control the size/posit​ion of LabVIEW DLL front panel in MFC applicatio​n?

    I would like to make a MFC application which loads a DLL generated by LabVIEW application builder. How can I control the size and position of the front panel in my MFC application? Thanks.

    Did you build the DLL from Labview yourself? If so, you just add another VI to the list. This VI accepts the Title of a front panel and top,left,right,bottom value of the front panel (VI property WindowBond). I'm not familiar with building DLLs using Labview so I really could not help you on how to build the DLL, but I believe it can be done (multiple VIs as multiple functions in a single DLL).
    To get the windows bonds for a vi, you need to use VI server property. Check out the examples under labview directory. There are plenty of them to demostrate how to use this feature.
    Joe

  • How to get the logged in user to accept remote management

    Hi,
    It possible to have the currently logged in user to accept or reject a Remote Desktop connection?
    The reason is that the remote administrator taking control should not be able to see the currently logged in user without him knowing it. I know about the "being observed" icon but that's not enough.
    I want the remote administrator to be able to work freely when no users are logged in but if a user is logged in, I want some kind of request/validation-or-rejection mechanism before the remote desktop administrator can take control of the mac.
    Is that possible?
    Ludo

    ARD supports both modes that you desire... The problem, as I recall, is that these are "all or nothing" switches you get one way, or the other, but you can't have it both ways.
    The controls for these options lie behind the "Computer Settings..." button in the Sharing Prefs panel.
    "Anyone may request permission to control the screen"
    and
    "VNC viewers may control the screen with password:"

  • RMI Controlling the Ports

    How can i control the ports through firewall
    please help me by seeing the client and server class
    Server Class
    package common.server;
    import java.io.*;
    import java.rmi.*;
    import java.rmi.server.*;
    import java.rmi.registry.*;
    import java.util.*;
    import common.biz.user.*;
    import common.message.*;
    import common.resource.*;
    import common.util.*;
    import common.setup.*;
    import common.service.*;
    //import common.server.*;
    import common.database.*;
    import common.partner.*;
    import common.comms.*;
    import common.exception.*;
    import common.message.*;
    import corpln.utilclass.*;
    import custiden.biz.*;
    import logon.util.*;
    import logon.gui.*;
    public class MulticastServerImpl extends UnicastRemoteObject
         implements SvcMulticastServerIntf {
         Variables
         private boolean checkLogon = true;
         protected Environment environment;
         private SysComponentID serverComponentID;
         protected StdServerServices stdServerServices;
         protected DBResourceMgr dbResourceMgr; // database resources management e.g. DB connection management
         protected CommsMgr commsMgr ; // communications management
         protected ServerPartnerMgrIntf serverPartnerMgr; // manages list of partners with whom server communicates
         //protected Environment environment;
         private ErrMsg errMsg ;
         private static String SERVER_STARTUP_ERR_MSG_K =" Unable To start up server ";
         private static String CANNOT_LOCATE_REGISTRY_MSG_K =" Cannot locate registry";
         private ClientMonitor clientMonitor = null;
         protected CheckPassword checkPassword = null;
         protected AccessProfile accessProfile = null; // object to check access to trans from sec server
         private ParaTab _ParaTab      = null;
         int port=0;
         Constants
         private static int MAX_NO_OF_CLIENTS = 100;
         private int curMaxNoOfClients = 0;
         private static String UNABLE_TO_CONNECT_MSG_K = "Unable to Connect to ";
         private static String MAX_CLIENT_EXCEEDED_MSG_K = "Maximum number of users exceeded:";
         private static String UNABLE_TO_DISCONNECT_MSG_K = "Unable to disconnect";
    CustomRMIFactory mysoc;
         Constructors
         //not in use
         public MulticastServerImpl () throws RemoteException {} ;
         //not in use
         public MulticastServerImpl (String parameterFileName, SysComponentID _serverComponentID) throws RemoteException {
              serverComponentID = _serverComponentID;           
              RetnCd retnCd = initServer(parameterFileName,_serverComponentID,MAX_NO_OF_CLIENTS,true); //inits default server settings
              if (retnCd.isError()) {
                   System.out.println(SERVER_STARTUP_ERR_MSG_K + " "+ _serverComponentID.getSysName()+ retnCd.getMsg());
                   System.exit(0);}
         //Other servers that requires MQ e.g. CustProfileServerImpl
         public MulticastServerImpl (String parameterFileName,SysComponentID serverComponentID, int curMaxNoOfClients) throws RemoteException {
              serverComponentID = _serverComponentID;
              RetnCd retnCd = initServer(parameterFileName,_serverComponentID,_curMaxNoOfClients, true);
              if (retnCd.isError()){
              System.out.println(SERVER_STARTUP_ERR_MSG_K + " "+ _serverComponentID.getSysName() + retnCd.getMsg());
                   System.exit(0);
         //PrintServerImpl
         public MulticastServerImpl (String parameterFileName,SysComponentID serverComponentID, int curMaxNoOfClients, boolean initMQ) throws RemoteException {
              serverComponentID = _serverComponentID;
              RetnCd retnCd = initServer(parameterFileName,_serverComponentID,_curMaxNoOfClients, initMQ);
              if (retnCd.isError()){
              System.out.println(SERVER_STARTUP_ERR_MSG_K + " "+ _serverComponentID.getSysName() + retnCd.getMsg());
                   System.exit(0);
         private RetnCd initServer(String parameterFileName, SysComponentID serverComponentID, int curMaxNoOfClients, boolean initMQ){
              if (parameterFileName.equals("")) {
                   printConsoleMsg("Parameter file name not supplied. Server cannot be started");
              printConsoleMsg("Starting server");
              BillUtilities.setOutputToFile(_serverComponentID.getSysName());
              RetnCd retnCd = new RetnCd();
              _ParaTab = new ParaTab();
              try {
              //Environment.setProcStatusDate(new Date()); // to get from file
              Environment.setProcStatusDate(BillUtilities.convertStrToDate(_ParaTab.getProcStatusDate()));
              printConsoleMsg("Current logical date :"+ Environment.getProcStatusDate());
              stdServerServices = new StdServerServices(_serverComponentID,
                   _curMaxNoOfClients, initMQ);
              } catch (ServerStartupEx ex){
                   retnCd.setError(ex);
                   System.out.println(retnCd.getMsg());
                   return retnCd;
    } catch (Exception e){
                   retnCd.setError(e);
                   System.out.println(retnCd.getMsg());
                   return retnCd;
              } //catch
         dbResourceMgr = stdServerServices.getDBResourceMgr();
         printConsoleMsg("Database resource manager started");
         //check for MQ initialization
         if(initMQ)
         commsMgr = stdServerServices.getCommsMgr();
         printConsoleMsg("Communications resource manager started");
         serverPartnerMgr = stdServerServices.getPartnerMgr();
         //environment = new Environment();
         clientMonitor = new ClientMonitor(serverPartnerMgr);
         Environment.setOrgCd(Environment.getPara(ConfigResrcek.ORG_CD_K));
         clientMonitor.start();// start monitor to track number of logon clients
         printConsoleMsg("Client monitor started");
    printConsoleMsg("Attaching to security server");     
         retnCd = attachSecurityServer();
         printConsoleMsg(retnCd.getMsg());
         String xcheckLogon = Environment.getPara(ConfigResrcek.CHECK_LOGON_AT_SERVER_K);
         System.out.println(xcheckLogon);
         if (xcheckLogon.equals("false") )
              checkLogon = false;
         else
              checkLogon = true;
         printConsoleMsg("Logon is "+ checkLogon);
              return retnCd;
         }// initServer
         // manages list of partners with whom server communicates System.out.println("Server " + serverComponentID.getSysName()+ " started with " + curMaxNoOfClients + " clients" + environment.getSysDate().toString() );
         Common Server Methods implemented
    // connection from client
    // retnCd contains the client's PartnerToken session object
         public final RetnCd connect(ServerPartnerImpl _newServerPartner) throws RemoteException{
              printConsoleMsg("New Client detected ");
              RetnCd retnCd = new RetnCd();
              retnCd = checkValidToken( (PartnerTokenImpl)_newServerPartner );
              if (retnCd.isSuccess()){
              PartnerTokenImpl clientToken = new PartnerTokenImpl();
              String partnerID = "";
              // request partner manager to add
              try{
              retnCd = serverPartnerMgr.addPartner(_newServerPartner); // add new connection as partner
              if (retnCd.isSuccess()){
                   partnerID = ((String)retnCd.getObj()); // client's partner ID assigned by the server
              clientToken.setLogonProcDateTimeAtServer(Environment.getProcStatusDate());
              clientToken.setLogonSysDateTimeAtServer(Environment.getSysDate()); //set server logon date and time
              clientToken.setClientIDAtServer(partnerID); //set client partner ID assigned by server
              clientToken.setServerSysComponentID(serverComponentID); //set server ID in component
              _newServerPartner.getClientCallback().dispMsg("Connected as "+partnerID + " to "+ getServerName());
              retnCd.setObj(clientToken);
              } catch (TablFullException tex){
                   retnCd.setError(tex);
                   retnCd.setMsg(UNABLE_TO_CONNECT_MSG_K + getServerName() MAX_CLIENT_EXCEEDED_MSG_K
                        tex.getMaxUsers() );
                   return retnCd;
              }//tablFullException
              catch (Exception ex){
                   retnCd.setError(ex);
                   retnCd.setMsg(UNABLE_TO_CONNECT_MSG_K + getServerName());
                   return retnCd;
              } // exception
              } // retncd.isSuccess()
              printConsoleMsg(retnCd.getMsg());
              return (retnCd);
         public final RetnCd disconnect(PartnerTokenImpl _partnerToken) throws RemoteException {
              RetnCd retnCd = new RetnCd();
              try {
    retnCd = serverPartnerMgr.removePartner(_partnerToken); // request partner manager to remove partner
              } catch (ObjNotFound ex){
                   retnCd.setError(ex);
                   retnCd.setMsg(UNABLE_TO_DISCONNECT_MSG_K);
              } //catch
              return retnCd;
         } // disconnect
    public final RetnCd isServerActive() throws RemoteException{
         RetnCd retnCd = new RetnCd();
         retnCd.setSuccess();
         return retnCd;
    public final RetnCd shutDown() throws RemoteException{
         RetnCd retnCd = new RetnCd();
         System.out.println("MulticastServerImpl about to shutdown...");
         broadcastMsg("SERVER IS SHUTTING DOWN ........NOW");
         System.exit(0);
         retnCd.setSuccess();
         return retnCd;
    public final RetnCd prepareShutDown(int minutes) throws RemoteException{
         RetnCd retnCd = new RetnCd();
         broadcastMsg("SERVER IS SHUTTING DOWN ........IN "+minutes + " MINUTES");
         retnCd.setSuccess();
         return retnCd;
    private final void broadcastMsg(String msg) throws RemoteException{
              int x = 0;
              int numOfClient = 0;
              RetnCd retnCd ;
              StdTbl copyOfPartnerList = null;
              String partnerID;
              do{
              copyOfPartnerList = serverPartnerMgr.getPartnerListSnapshot();
              numOfClient = copyOfPartnerList.size();
              if ((numOfClient)>0){
                   copyOfPartnerList.goTop();
                   while (!copyOfPartnerList.isEOTbl()) {
                        try{
                        ServerPartnerImpl partner = ((ServerPartnerImpl)
                             (copyOfPartnerList.getCurrent()));
                        partnerID = partner.getClientPartnerID();
                   retnCd = sendMsg(partner,msg);
                        } catch (Exception ex){ex.printStackTrace(); break;};
                   copyOfPartnerList.skip();
                   } //while
                   copyOfPartnerList.endSeqProc();
                   //completed sending
                   break;               
              } //if
              else break;
              } while (true); //endless loop until interrupted
         }//broadcastMsg
    public final void sendMsgToClient(StdTbl usrList, String msg) throws RemoteException{
              usrList.goTop();
         while (!usrList.isEOTbl()) {
              try{
                   String usr = (String)usrList.getCurrent();
              sendMsgToClient(usr,msg);
    } catch (Exception ex){ex.printStackTrace(); break;};
                   usrList.skip();
              } //while
              usrList.endSeqProc();
              //completed sending
    private final void sendMsgToClient(String usr, String msg) throws RemoteException{
              int x = 0;
              int numOfClient = 0;
              RetnCd retnCd ;
              StdTbl copyOfPartnerList = null;
              String partnerID;
              do{
                   copyOfPartnerList = serverPartnerMgr.getPartnerListSnapshot();
              numOfClient = copyOfPartnerList.size();
              if ((numOfClient)>0){
              copyOfPartnerList.goTop();
              while (!copyOfPartnerList.isEOTbl()) {
                   try{
              ServerPartnerImpl partner = ((ServerPartnerImpl)
                   (copyOfPartnerList.getCurrent()));
                   //send for specific user
                   if(!partner.getClientSysComponentID().isSysClient()) {
                   if(((partner.getUser()).getLogonID()).equals(usr)){
                        partnerID = partner.getClientPartnerID();
                   retnCd = sendMsg(partner,msg);
                   }// end check that it is not a system client
              } catch (Exception ex){ex.printStackTrace(); break;};
              copyOfPartnerList.skip();
              } //while
              copyOfPartnerList.endSeqProc();
              //completed sending
              break;               
              } //if
              else break;
              } while (true); //endless loop until interrupted
         }//broadcastMsg
         private RetnCd sendMsg(ServerPartnerImpl _partner, String msg){
              RetnCd retnCd = new RetnCd();
              //send msg to application clients only
              if(!_partner.getClientSysComponentID().isSysClient()) {
              try {
                   System.out.print("Send Msg to " + _partner.getClientPartnerID());
              retnCd = _partner.getClientCallback().isClientUp();
              System.out.println("is active");
    partner.getClientCallback().dispMsg("Client:"+partner.getClientPartnerID()+" Message from Server:"+ serverPartnerMgr.getServerName() +" " +(new Date()).toString() + " "+msg);
              catch (Exception ex) {
                   System.out.println("is not active");
              retnCd.setError(ex);
              return retnCd;
         } //pollActiveClient
         public final String getServerName() throws RemoteException{ return serverComponentID.getSysName();}     
    public final Date getProcDate() throws RemoteException {
         return Environment.getProcStatusDate();
    public final Date getSysDate() throws RemoteException {
         return Environment.getSysDate();
         Supporting / utility methods for server setup
    protected final RetnCd rebindServer(SysComponentID serverComponentID,Remote _server){
         RetnCd retnCd = new RetnCd();
         try {
                   //if (port==0)
                   //     port=5000;
              //     if (port==5099)
              //          System.out.println("Users exceeded");
              //     }else
              //     port=port+1;     
              //     mysoc = new CustomRMIFactory ("localhost",port);
              //     System.out.println("PORT" +port);
              //     RMISocketFactory.setSocketFactory(mysoc);
         String RMIURL = Environment.getPara(ConfigResrcek.RMI_REGISTRY_CONF_K);
         Registry r = LocateRegistry.getRegistry(RMIURL);
              // Registry r = LocateRegistry.createRegistry(port,mysoc,mysoc);
         printConsoleMsg("Registry located at "+ RMIURL);
              //_server=new Remote(mysoc);
         //     UnicastRemoteObject.exportObject(_server,0,mysoc,mysoc);
         String componentName = serverComponentID.getSysName();
         r.rebind(componentName, _server);
         printConsoleMsg("Server Bound: " + componentName);
         String[] serverList = r.list();
         printServerList(serverList);
         retnCd.setSuccess();
         }catch (RemoteException rex){
              rex.printStackTrace();
              retnCd.setError(rex);
         }//RemoteException
         catch (Exception ex){
              ex.printStackTrace();
              retnCd.setError(ex);
         }//Exception
         return retnCd;
    } //rebindServer     
         protected void printHeader(String msg){
         printConsoleMsg("########################################################################");
         printConsoleMsg(msg);
    printConsoleMsg("########################################################################");
         protected void printHeader(String msg,RetnCdSQL ret){
         printConsoleMsg("########################################################################");
         printConsoleMsg(msg);
    printConsoleMsg("########################################################################");
    System.out.println(ret.isSuccess());
         protected void printConsoleMsg(String msg){
         String dateStr = new Date().toString();
         System.out.println(dateStr + serverComponentID.getSysName()+" --> " + msg);
         private void printServerList (String [] _serverList){
              System.out.println("List of objects in RMI Reg");
              for (int x = 0; x< _serverList.length; x++){
                   System.out.println(_serverList[x]);
              } //for
    private boolean isCheckLogon(){ return checkLogon;}
         private RetnCd attachSecurityServer(){
         checkPassword = new CheckPassword("",""); // no user id, password reqd as need to init object only, pwd reqd for initial connection
    RetnCd retnCd = checkPassword.connectToServer(); // connect to security server
         System.out.println("From MulticastServerImple" +retnCd);
         return retnCd; // connect to server
         protected synchronized RetnCd checkValidToken(PartnerTokenImpl partnerToken){
              // calls the security server to check if valid profile
              RetnCd retnCd = new RetnCd();
              if (isCheckLogon() && !partnerToken.getClientSysComponentID().isSysClient()){
              printConsoleMsg("Checking access for "+ partnerToken.getClientSysComponentID ().getSubComponentID() +" for "+ partnerToken.getUser().getLogonID());
              //RetnCd retnCd = accessProfile.checkAccess(partnerToken.getUser(),
              //     partnerToken.getClientSysComponentID ().getSubComponentID());
              retnCd =partnerToken.getUser().isValid();
    if (retnCd.isSuccess()){
         AccessProfile accessProfile = new AccessProfile(checkPassword.getAccessCSoc()); // this is the handle for security server access
    retnCd = accessProfile.checkAccess(checkPassword.getAccessCSoc(), partnerToken.getUser(),partnerToken.getClientSysComponentID ().getSubComponentID() );
              } else {retnCd.setSuccess();retnCd.setMsg("Logon check is disabled");}
              printConsoleMsg(retnCd.getMsg());
              return retnCd;
    /* methods defined in SvcUnicastServerIntf but need not be implemented here */
    public RetnCd retrCustIden(CustIden _CustIden)  throws RemoteException{ return null;}
    public RetnCd print (ArrayList list, PartnerTokenImpl partnerToken)
         throws RemoteException{ return null;}
    }//end-MulticastServerImpl
    Client class
    // Class : MulticastServerImpl.java
    package common.server;
    import java.io.*;
    import java.rmi.*;
    import java.rmi.server.*;
    import java.rmi.registry.*;
    import java.util.*;
    import common.biz.user.*;
    import common.message.*;
    import common.resource.*;
    import common.util.*;
    import common.setup.*;
    import common.service.*;
    //import common.server.*;
    import common.database.*;
    import common.partner.*;
    import common.comms.*;
    import common.exception.*;
    import common.message.*;
    import corpln.utilclass.*;
    import custiden.biz.*;
    import logon.util.*;
    import logon.gui.*;
    public class MulticastServerImpl extends UnicastRemoteObject
         implements SvcMulticastServerIntf {
         Variables
         private boolean checkLogon = true;
         protected Environment environment;
         private SysComponentID serverComponentID;
         protected StdServerServices stdServerServices;
         protected DBResourceMgr dbResourceMgr; // database resources management e.g. DB connection management
         protected CommsMgr commsMgr ; // communications management
         protected ServerPartnerMgrIntf serverPartnerMgr; // manages list of partners with whom server communicates
         //protected Environment environment;
         private ErrMsg errMsg ;
         private static String SERVER_STARTUP_ERR_MSG_K =" Unable To start up server ";
         private static String CANNOT_LOCATE_REGISTRY_MSG_K =" Cannot locate registry";
         private ClientMonitor clientMonitor = null;
         protected CheckPassword checkPassword = null;
         protected AccessProfile accessProfile = null; // object to check access to trans from sec server
         private ParaTab _ParaTab      = null;
         int port=0;
         Constants
         private static int MAX_NO_OF_CLIENTS = 100;
         private int curMaxNoOfClients = 0;
         private static String UNABLE_TO_CONNECT_MSG_K = "Unable to Connect to ";
         private static String MAX_CLIENT_EXCEEDED_MSG_K = "Maximum number of users exceeded:";
         private static String UNABLE_TO_DISCONNECT_MSG_K = "Unable to disconnect";
    CustomRMIFactory mysoc;
         Constructors
         //not in use
         public MulticastServerImpl () throws RemoteException {} ;
         //not in use
         public MulticastServerImpl (String parameterFileName, SysComponentID _serverComponentID) throws RemoteException {
              serverComponentID = _serverComponentID;           
              RetnCd retnCd = initServer(parameterFileName,_serverComponentID,MAX_NO_OF_CLIENTS,true); //inits default server settings
              if (retnCd.isError()) {
                   System.out.println(SERVER_STARTUP_ERR_MSG_K + " "+ _serverComponentID.getSysName()+ retnCd.getMsg());
                   System.exit(0);}
         //Other servers that requires MQ e.g. CustProfileServerImpl
         public MulticastServerImpl (String parameterFileName,SysComponentID serverComponentID, int curMaxNoOfClients) throws RemoteException {
              serverComponentID = _serverComponentID;
              RetnCd retnCd = initServer(parameterFileName,_serverComponentID,_curMaxNoOfClients, true);
              if (retnCd.isError()){
              System.out.println(SERVER_STARTUP_ERR_MSG_K + " "+ _serverComponentID.getSysName() + retnCd.getMsg());
                   System.exit(0);
         //PrintServerImpl
         public MulticastServerImpl (String parameterFileName,SysComponentID serverComponentID, int curMaxNoOfClients, boolean initMQ) throws RemoteException {
              serverComponentID = _serverComponentID;
              RetnCd retnCd = initServer(parameterFileName,_serverComponentID,_curMaxNoOfClients, initMQ);
              if (retnCd.isError()){
              System.out.println(SERVER_STARTUP_ERR_MSG_K + " "+ _serverComponentID.getSysName() + retnCd.getMsg());
                   System.exit(0);
         private RetnCd initServer(String parameterFileName, SysComponentID serverComponentID, int curMaxNoOfClients, boolean initMQ){
              if (parameterFileName.equals("")) {
                   printConsoleMsg("Parameter file name not supplied. Server cannot be started");
              printConsoleMsg("Starting server");
              BillUtilities.setOutputToFile(_serverComponentID.getSysName());
              RetnCd retnCd = new RetnCd();
              _ParaTab = new ParaTab();
              try {
              //Environment.setProcStatusDate(new Date()); // to get from file
              Environment.setProcStatusDate(BillUtilities.convertStrToDate(_ParaTab.getProcStatusDate()));
              printConsoleMsg("Current logical date :"+ Environment.getProcStatusDate());
              stdServerServices = new StdServerServices(_serverComponentID,
                   _curMaxNoOfClients, initMQ);
              } catch (ServerStartupEx ex){
                   retnCd.setError(ex);
                   System.out.println(retnCd.getMsg());
                   return retnCd;
    } catch (Exception e){
                   retnCd.setError(e);
                   System.out.println(retnCd.getMsg());
                   return retnCd;
              } //catch
         dbResourceMgr = stdServerServices.getDBResourceMgr();
         printConsoleMsg("Database resource manager started");
         //check for MQ initialization
         if(initMQ)
         commsMgr = stdServerServices.getCommsMgr();
         printConsoleMsg("Communications resource manager started");
         serverPartnerMgr = stdServerServices.getPartnerMgr();
         //environment = new Environment();
         clientMonitor = new ClientMonitor(serverPartnerMgr);
         Environment.setOrgCd(Environment.getPara(ConfigResrcek.ORG_CD_K));
         clientMonitor.start();// start monitor to track number of logon clients
         printConsoleMsg("Client monitor started");
    printConsoleMsg("Attaching to security server");     
         retnCd = attachSecurityServer();
         printConsoleMsg(retnCd.getMsg());
         String xcheckLogon = Environment.getPara(ConfigResrcek.CHECK_LOGON_AT_SERVER_K);
         System.out.println(xcheckLogon);
         if (xcheckLogon.equals("false") )
              checkLogon = false;
         else
              checkLogon = true;
         printConsoleMsg("Logon is "+ checkLogon);
              return retnCd;
         }// initServer
         // manages list of partners with whom server communicates System.out.println("Server " + serverComponentID.getSysName()+ " started with " + curMaxNoOfClients + " clients" + environment.getSysDate().toString() );
         Common Server Methods implemented
    // connection from client
    // retnCd contains the client's PartnerToken session object
         public final RetnCd connect(ServerPartnerImpl _newServerPartner) throws RemoteException{
              printConsoleMsg("New Client detected ");
              RetnCd retnCd = new RetnCd();
              retnCd = checkValidToken( (PartnerTokenImpl)_newServerPartner );
              if (retnCd.isSuccess()){
              PartnerTokenImpl clientToken = new PartnerTokenImpl();
              String partnerID = "";
              // request partner manager to add
              try{
              retnCd = serverPartnerMgr.addPartner(_newServerPartner); // add new connection as partner
              if (retnCd.isSuccess()){
                   partnerID = ((String)retnCd.getObj()); // client's partner ID assigned by the server
              clientToken.setLogonProcDateTimeAtServer(Environment.getProcStatusDate());
              clientToken.setLogonSysDateTimeAtServer(Environment.getSysDate()); //set server logon date and time
              clientToken.setClientIDAtServer(partnerID); //set client partner ID assigned by server
              clientToken.setServerSysComponentID(serverComponentID); //set server ID in component
              _newServerPartner.getClientCallback().dispMsg("Connected as "+partnerID + " to "+ getServerName());
              retnCd.setObj(clientToken);
              } catch (TablFullException tex){
                   retnCd.setError(tex);
                   retnCd.setMsg(UNABLE_TO_CONNECT_MSG_K + getServerName() MAX_CLIENT_EXCEEDED_MSG_K
                        tex.getMaxUsers() );
                   return retnCd;
              }//tablFullException
              catch (Exception ex){
                   retnCd.setError(ex);
                   retnCd.setMsg(UNABLE_TO_CONNECT_MSG_K + getServerName());
                   return retnCd;
              } // exception
              } // retncd.isSuccess()
              printConsoleMsg(retnCd.getMsg());
              return (retnCd);
         public final RetnCd disconnect(PartnerTokenImpl _partnerToken) throws RemoteException {
              RetnCd retnCd = new RetnCd();
              try {
    retnCd = serverPartnerMgr.removePartner(_partnerToken); // request partner manager to remove partner
              } catch (ObjNotFound ex){
                   retnCd.setError(ex);
                   retnCd.setMsg(UNABLE_TO_DISCONNECT_MSG_K);
              } //catch
              return retnCd;
         } // disconnect
    public final RetnCd isServerActive() throws RemoteException{
         RetnCd retnCd = new RetnCd();
         retnCd.setSuccess();
         return retnCd;
    public final RetnCd shutDown() throws RemoteException{
         RetnCd retnCd = new RetnCd();
         System.out.println("MulticastServerImpl about to shutdown...");
         broadcastMsg("SERVER IS SHUTTING DOWN ........NOW");
         System.exit(0);
         retnCd.setSuccess();
         return retnCd;
    public final RetnCd prepareShutDown(int minutes) throws RemoteException{
         RetnCd retnCd = new RetnCd();
         broadcastMsg("SERVER IS SHUTTING DOWN ........IN "+minutes + " MINUTES");
         retnCd.setSuccess();
         return retnCd;
    private final void broadcastMsg(String msg) throws RemoteException{
              int x = 0;
              int numOfClient = 0;
              RetnCd retnCd ;
              StdTbl copyOfPartnerList = null;
              String partnerID;
              do{
              copyOfPartnerList = serverPartnerM

    Hi,
    for firewall problems search this forum with keyword
    firewall.
    This thread seems to me very instructive:
    http://forum.java.sun.com/thread.jsp?forum=58&thread=151971
    Furthermore, search the forum with multihomed or multi-homed keywords, or even port.
    For port and interface control, this thread should be
    useful:
    http://forum.java.sun.com/thread.jsp?forum=58&thread=157864
    One solution is a custom socket factory.
    Btw, these are really FAQs ...
    Have fun,
    Klaus

Maybe you are looking for

  • XML Page cannot be displayed error on interactive reports

    Hi, I am having trouble with a user downloading an interactive report as a CSV output. When a user tries to download the interactive report (as it is displayed when the web page loads, no alterations), they are getting this error: The XML Page cannot

  • A/c assignment category for material type

    Hi Gurus, 1) Can I fix a/c assignmnet category for a material type? For example, I want a/c assignment category K for NLAG materials. If while creating PO for a NLAG material, somebody forgets to enter A/c assignment category, it should give an error

  • Need help writing client for WSE 1.0 Web Service

    Hello all, I am attempting to write Java clients against a .Net service that uses WSE 1.0. I can't seem to get any of toolkits I have tried to work with this service. Unfounately, I do not own the service, so I cannot upgrade it to WSE 2.0. The probl

  • FDM ERPI using EBS souce initialization.

    Hi, I am using FDM ERP Integartor for Integrating data from EBS to Planning ,in this process using configured ODI

  • Cursor disappears (invisible) after exiting TDM

    I've recently purchased a 0.5m thunderbolt cable to connect my Macbook pro to my 27" iMac. All is fine until I exit Target Display Mode (apple F2). At that point the cursor disappears. Very annoyingly, I can just about trace it's whereabouts via the