Input / Output Object Stream

Hello
I'm using Input / Output Object Stream to transfer an object between a client / server utilities.
I create an object and give it a state, then used the OutputObjectStream.
After sending the object for the first time (and recieving it in the InputObjectStream), I change the state of the object and send it again using the same output stream.
On the recieving side I got the "Old" object, i.e. an object with the Old State.
any idea ???
Oded

The Object Stream keeps track of references to objects and only sends an object once.
This is to allow you to send objects which contain circular references.
The may around this is to call reset() on the ObjectOutputStream. This causes it to forget all refrences (And the ObjectInputStream)
You have to do this anyway otherwise the ObejctOutputStream will remember more and more objects until you run out of memory!

Similar Messages

  • Get multiple Input/Output Stream from same socket ?

    For a better express of my problem i will put my test example
    I have those 4 classes
    package test;
    import...
    public class ReaderExecutor extends Thread{
            private InputStream in = null;
            private static int defaultID = 0;
            private int ID = getID();
            public ReaderExecutor(InputStream in){
                this.in = in;
            public void run(){
                try {
                    int c ;
                    while ((c=in.read())!=-1)
                        System.out.println("ReaderThread " + this.ID + ":" + c);
                catch (IOException e) {
                    System.out.println("ReaderThread "+this.ID+" stopped !");
            private static int getID(){
                return defaultID++;
    package test;
    import...
    public class WriterExecuter extends Thread{
        OutputStream out = null;
        private static boolean odd = true;
        private boolean isOdd ;
        public WriterExecuter(OutputStream out) {
            this.out = out;
            isOdd = odd;
            odd = !odd;
        public void run(){
            try{
                for (int i = isOdd?1:2;i<10;i+=2){
                    System.err.println(i);
                    out.write(i);
            }catch(Exception e){
                System.out.println("WriterThread stopped !");
    package test;
    import...
    public class Main { 
        public Main() {
        public static void main(String[] args) throws Exception {
            try{
                ServerSocket ss = new ServerSocket(9090);
                System.out.println("Ascult ... ");
                Socket client = ss.accept();
                new ReaderExecutor(client.getInputStream()).start();
                //Thread.sleep(2000);
                new ReaderExecutor(client.getInputStream()).start();
            }catch (Exception e){
                e.printStackTrace();
    package test;
    import...
    public class Main1 {
        public Main1() {
        public static void main(String[] args) {
            try{
                Socket s = new Socket("localhost",9090);
                WriterExecuter t= null ;
                t = new WriterExecuter(s.getOutputStream());
                t.start();
                t = new WriterExecuter(s.getOutputStream());
                t.start();
            }catch(Exception e){
                e.printStackTrace();
    }Now if i run successive Main , Main1 i get this output
    Ascult ...
    ReaderThread 0:0
    ReaderThread 1:0
    ReaderThread 0:0
    ReaderThread 1:0
    ReaderThread 0:0
    ReaderThread 1:0
    ReaderThread 0:0
    ReaderThread 1:0
    ReaderThread 0:0
    ReaderThread 0 stopped !
    ReaderThread 1 stopped !The question is can i get other Input/Output individual streams with a separate logic functionality from the same socket?
    From this example it seems i can't :(
    Thx
    Alex

    For what you are trying to do the simplest solution is to have one socket per "stream" that is the way they are designed to be used.
    However, you can multiplex multiple stream over a single socket, but you have do the coding yourself or use a solution which does this for you e.g. JMS. (There is no support at the socket level for this)

  • Object input/output stream

    Hi, i'm currently doing a software enginnering project at university. I need to understand how to save and read from files.
    I've been told to look at object input/output stream, which I have, but I can't get my head around what's written in the books. Does anyone know where i can find a good tutorial on this subject?
    thanks
    AK

    I like the tutorial on this site because it tells you what to use for what you're doing (click on Using the Streams). Hope it helps!
    http://java.sun.com/docs/books/tutorial/essential/io/index.html

  • Socket input / output stream

    Does anyone know if the input / output streams returned by getInputStream() / getOutputStream() in java.net.Socket are buffered by default?

    y they are buffered, but to use the buffer, you have to use available() and read(byte[] buf ...

  • Buffered input/output stream

    How the buffereing is done in buffered input/output streams?
    From the API doc I got to know that they use internal buffer to store bytes before they can be read or written. But i found that File input/output stream also have methods like read(byte[]) or write(byte[]). So what is extra in buffered input/ouput streams? Does the phrase "buffered" suggests that bytes can be read from an array or be written to an array? Am i thinking the right way?

    How the buffereing is done in buffered input/output
    streams?
    From the API doc I got to know that they use internal
    buffer to store bytes before they can be read or
    written. But i found that File input/output stream
    also have methods like read(byte[]) or write(byte[]).Thouse are your buffer, not the streams'.
    So what is extra in buffered input/ouput streams?
    Does the phrase "buffered" suggests that bytes can be
    read from an array or be written to an array? Am i
    thinking the right way?No. It means that the stream either prefetches some data even if it's not requested yet, or that it withholds data that it's supposed to write until it's flushed or gets a larger chunk.

  • Direct Transfer of VAT Input/Output Amounts

    Hi,
    The users use the T Code S_ALR_87012357 for transferring the VAT Input and Output Amounts that have been posted from the Purchase and Sale transactions, automatically. However, of the late it was observed that when the transfer is made for the particular month, say June, the system gives the message "No list generated", even though the postings have taken place from Purchase and Sale transactions, while in case of subsequent months, say August, the list and the proposed entry for aforesaid transfers gets generated during the Test Run.
    Could anyone advise what could be the reason for the same and what needs to be checked?
    Thanks !
    Rgds

    The Object Stream keeps track of references to objects and only sends an object once.
    This is to allow you to send objects which contain circular references.
    The may around this is to call reset() on the ObjectOutputStream. This causes it to forget all refrences (And the ObjectInputStream)
    You have to do this anyway otherwise the ObejctOutputStream will remember more and more objects until you run out of memory!

  • Wscompile stubbornly uses SOAPElement as input/output to/from operation.

    Hello. I am trying to create a web service client to consume our own web service using JWSDP 1.6. I have modified webserviceclient.xml to add "features=searchschema" in the wscompile element.
    That correctly creates proxy classes for all the complexTypes in our web service's schema. However, our operation called runTransaction() should be accepting an object of type RequestMessage and returning an object of type ResponseMessage. The code generated by wscompile accepts and returns SOAPElement instead.
    I have blindly tried all sorts of combinations of features (e.g. unwrap, explicitcontext) when calling wscompile but to no avail.
    Am I missing something? When and why would wscompile not use the correct classes as input/output for any given operation? When and why would it choose SOAPElement instead?
    In its current state, the generated code would let me populate the RequestMessage object with data but I do not see how I can eventually pass this RequestMessage object to the runTransaction() method (unless maybe I use serialization or something but that seems unnecessarily complicated). So, the generated proxy classes seem useless at this point.
    Thanks. I'd really appreciate any help/direction.

    Hello. I went ahead and added resolver.jar file to my classpath. Then, it looked for XMLStreamException, which I found in sjsxp/lib/jsr173_api.jar (which I have yet to find out what it's for). I went ahead and added that too. And now, I'm getting the stack trace below.
    1. Why is it looking for a class from BEA?
    2. How do I make it not to?
    Please note that I do not have any configuration file or anything. Is there some client-side deployment file that I need to have and configure?
    Thanks again,
    Ever
    Exception in thread "main" javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.MXParserFactory not found
    at javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:72)
    at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:176)
    at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:92)
    at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136)
    at com.sun.xml.ws.streaming.XMLStreamReaderFactory.<clinit>(XMLStreamReaderFactory.java:63)
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:140)
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parseWSDL(RuntimeWSDLParser.java:165)
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:62)
    at com.sun.xml.ws.wsdl.WSDLContext.<init>(WSDLContext.java:57)
    at com.sun.xml.ws.client.ServiceContextBuilder.build(ServiceContextBuilder.java:77)
    at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java
    :117)
    at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:50)
    at javax.xml.ws.Service.<init>(Service.java:58)
    at com.mycompany.client.soap.TransactionProcessor.<init>(TransactionProcessor.java:42)
    at MySample.main(MySample.java:141)

  • Need a hand to configure FMS 4.5 to output HTTP stream...

    Hi folks!
    I'm trying to setup Flash Media Server (Streaming server) and I'm having issues with outputting HTTP stream.
    The system works very well with the Flash ooutput, but for some reason the livepkgr won't work. Tried several things over the past two weeks, I've went thru docs and I don't know anymopre what else I can try... The source of the video feed is upstreamed from my own home computer, via Flash Live Encoder.
    I operate a dedicated server, running Windows 2008 Server. The default web site is IIS. I configured the ports so that port 80 is the default IIS inetpub/webroot, and the FMS 4.5 install is accessed via port 8134. So the IP http://184.107.48.113 opens the default Windows IIS, and http://184.107.48.113:8134 takes the request to the FMS install.
    The video stream is live on the Flash server, I can see it in the console, the livepkgr appears to be working, and I do see the .STREAM file being generated in the _definst_/livebroadcast/livestream folder. So the server works, and process the HTTP output.
    I believe the URL I should use to access the output HLS stream is: http://184.107.48.113:8134/livepkgr/_definst_/livebroadcast/livestream.f4m.m3u8
    but it returns a file not found message. Is there something wrong with the URL syntax? Or there is something else in the .conf files I must tweak? Or is it an issue with Apache 2.2 configuration?
    You can see the live Flash stream from my web site http://www.blackflag.tv I want to change this Flash stream to HTTP stream.
    Thanks for your help folks!!!
    -sv bell

    Hey,
    I tried playing HDS now and its working fine. It wasn't playing earlier.
    You can try it out by playing the content through the player here: http://www.osmf.org/configurator/fmp/#
    Input: http://184.107.48.113:8134/hds-live/livepkgr/_definst_/livebroadcast/l ivestream.f4m
    (Don't forget to select the radio button for HTTP streaming)
    This means everything is working on the server side.
    Now, I don't have an iDevice on me to check out HLS playback.
    You are using an older version of QuickTime, which could be an issue. Please let me know what publish settings you are using (as in the codecs).
    Also can you try playing it back through HTML5. To do that, just create an HTML page with the below content.
    <!DOCTYPE html>
    <html>
    <head>
    <title>Title of the document</title>
    </head>
    <body>
    <video width="320" height="240" controls="controls" src="http://184.107.48.113:8134/hls-live/livepkgr/_definst_/livebroadcast/livestream.m3u8"  />
    </body>
    </html>

  • File I/O Using Object Streams

    My program is supposed to be a Driving instructor program that allows someone to enter a Name and Lesson Number, and it will pull up the Date, and Comments that the lesson took place. The information is saved in a file with the person's name, and saved as an array. We are required to use Object Streams for the file i/o. The only part of the program that I don't have working is the actual file i/o. The large commented section that I have in the datamanager class is the notes from the professor on the board and I haven't removed them yet. There are 4 classes for this file.
    The main class that creates the program and calls the other classes.
    import java.awt.*;
    import javax.swing.*;
    public class main {
    /** Creates a new instance of main */
    public main() {
    * @param args the command line arguments
    public static void main(String[] args)
    guiLayout labelFrame = new guiLayout(); // creates LabelFrame
    labelFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    labelFrame.setSize(600, 200);
    labelFrame.setVisible(true);
    } The second class is the GUI class and event handler class.
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class guiLayout extends JFrame{
        private JPanel centertop;
        private JPanel centermiddle;
        private JPanel centerbottom;
        private JLabel dateLabel;
        private JLabel nameLabel;
        private JLabel lessonLabel;
        private JLabel commentsLabel;
        private JTextArea DateTextArea;
        private JTextArea NameTextArea;
        private JTextArea LessonTextArea;
        private JTextArea CommentsTextArea;
        private JButton Save;
        private JButton Retrieve;
        private String tempDay[];
        private DataManager DMO;
        /** Creates a new instance of guiLayout */
        public guiLayout()
            super("Drive Application");
            setLayout(new FlowLayout());
            dateLabel = new JLabel("Date (mm/dd/yy)");
            nameLabel = new JLabel("Name");
            lessonLabel = new JLabel("Lesson (1-10)");
            commentsLabel = new JLabel("Comments");
            DateTextArea = new JTextArea(1, 7);
            NameTextArea = new JTextArea(1, 15);
            LessonTextArea = new JTextArea(1, 2);
            CommentsTextArea = new JTextArea(6, 30);
            Save = new JButton( "Save");
            Retrieve = new JButton( "Retrieve");
            //insert into GUI
            //TOP
            centertop = new JPanel();
            centertop.add(nameLabel);
            centertop.add(NameTextArea);
            centertop.add(lessonLabel);
            centertop.add(LessonTextArea);
            centertop.add(dateLabel);
            centertop.add(DateTextArea);
            centertop.setLayout(new GridLayout(6,1));
            add(centertop, BorderLayout.NORTH);
            centermiddle = new JPanel();
            centermiddle.setLayout(new GridLayout(1,1));
            centermiddle.add(CommentsTextArea);
            add(centermiddle, BorderLayout.CENTER);
            centerbottom = new JPanel();
            centerbottom.setLayout(new GridLayout(1,3));
            centerbottom.add (Save);
            centerbottom.add(Retrieve);
            add(centerbottom, BorderLayout.SOUTH);
            ButtonHandler handler = new ButtonHandler();
            Save.addActionListener( handler);
            Retrieve.addActionListener(handler);
        private class ButtonHandler implements ActionListener
            public void actionPerformed(ActionEvent event)
                String Namein = NameTextArea.getText();
                String Datein = DateTextArea.getText();
                String Commentsin = CommentsTextArea.getText();
                int Lessonin = Integer.parseInt(LessonTextArea.getText());
                if(event.getSource()==Save)
                   DMO.Save(Namein, Datein, Commentsin, Lessonin);
                if(event.getSource()==Retrieve)
                    if(Lessonin >= 1 && Lessonin <= 10)
                       LessonRecord r = (DMO.Retrieve(Namein, Lessonin));
                    else
                        String errormess = "Lesson Number must be between 1 and 10!";
                        CommentsTextArea.setText(errormess);
    }The third class is the DataManager class which handles the actual file i/o.
    import java.io.*;
    import java.util.*;
    public class DataManager implements Serializable
        //private String Path = "P:\\D00766703\\CET431\\Assign5";
        private String Path = "C:\\Java";
        FileInputStream fin;
        FileOutputStream fout;
        ObjectInputStream oin;
        ObjectOutputStream oout;
        public String Retrieve(String name, int lesson)
            String itemFile = Path + name + ".ser";
            File f = new File(itemFile);
            if (f.exists() == true)
                try
                    if(fin == null)
                        fin = new FileInputStream(itemFile);
                        oin = new ObjectInputStream(fin);
                    LessonRecord r[] = oin.readObject();
                    if(fin.available() == 0)
                        oout.close();
                        fout.close();
                        return r[lesson - 1];
                catch(IOException ioe)
                    System.out.print(ioe);
            else
                LessonRecord LR = new LessonRecord();
                LR.date = " ";
                LR.comment = "File Not Found";
                return LR;
        /*create file object for Path\\Name
         *if file exists
         *  create fileinputstream
         *  create objectinputstream - oin
         *  read array of lesson records
         *  LessonRecord |r[] = oin.readObject();    need cast to array here
         *  close object input stream and file input stream
         *  return |r[lesson - 1];
         *else file does NOT EXIST
         *  LessonRecord LR = new LessonRecord();
         *  LR.date = " ";
         *  LR.comment = error message;
         *  return LR;
        public void Save(String name, String date, String comment, int lesson)
            String itemFile = Path + name + ".ser";
            File f = new File(itemFile);
            LessonRecord |r[];
            if (f.exists() == true)
                try
                    fin = new FileInputStream(itemFile);
                    oin = new ObjectInputStream(fin);
                    LessonRecord r[] = oin.readObject();
                catch(IOException ioe)
                    System.out.print(ioe);
            else
                r = new LessonRecord[10];
            r[lesson - 1] = new LessonRecord(date, comment);
            fout = new FileOutputStream(itemFile, true);
            oout = new ObjectOutputStream(fout);
            oout.write(r);
            oout.close();
            fout.close();
        /*create file object for Path\\Name
         *LessonRecord |r[];
         *if file exists
         *  create fileinputstream
         *  create objectinputstream - oin
         *  read array of lesson records
         *  LessonRecord |r[] = oin.readObject();    need cast to array here
         *  close object input stream and file input stream
         *else
         *  |r = new LessonRecord[10];
         *|r[lesson - 1] = new LessonRecord(date, comment);
         *createfileoutputstream(BaseDir\\Name);
         *createobjectoutputstream - oout
         *oout.write(|r);
         *closeobjectstream
         *closefilestream
    }And the fourth class is the LessonRecord class which is serializable and has the date and comments variables.
    import java.io.Serializable;
    public class LessonRecord implements Serializable
        public String Date;
        public String Comment;
        /** Creates a new instance of LessonRecord */
        public LessonRecord()
            Date = "";
            Comment = "";
        public LessonRecord(String Datein, String Commentin)
            Date = Datein;
            Comment = Commentin;
    }I could have sworn that the professor said to make it |r for the account records variable names, but I always get errors when I do that, and I need to know how to cast to an array too.

    hi Friend,
    I have made some modification to your code. and try this...I think it will help you...
    /*guiLayout.java*/
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class guiLayout extends JFrame{
        private JPanel centertop;
        private JPanel centermiddle;
        private JPanel centerbottom;
        private JLabel dateLabel;
        private JLabel nameLabel;
        private JLabel lessonLabel;
        private JLabel commentsLabel;
        private JTextArea DateTextArea;
        private JTextArea NameTextArea;
        private JTextArea LessonTextArea;
        private JTextArea CommentsTextArea;
        private JButton Save;
        private JButton Retrieve;
        private String tempDay[];
        private DataManager DMO;
        /** Creates a new instance of guiLayout */
        public guiLayout()
            super("Drive Application");
            DMO=new DataManager();
            setLayout(new FlowLayout());
            dateLabel = new JLabel("Date (mm/dd/yy)");
            nameLabel = new JLabel("Name");
            lessonLabel = new JLabel("Lesson (1-10)");
            commentsLabel = new JLabel("Comments");
            DateTextArea = new JTextArea(1, 7);
            NameTextArea = new JTextArea(1, 15);
            LessonTextArea = new JTextArea(1, 2);
            CommentsTextArea = new JTextArea(6, 30);
            Save = new JButton( "Save");
            Retrieve = new JButton( "Retrieve");
            //insert into GUI
            //TOP
            centertop = new JPanel();
            centertop.add(nameLabel);
            centertop.add(NameTextArea);
            centertop.add(lessonLabel);
            centertop.add(LessonTextArea);
            centertop.add(dateLabel);
            centertop.add(DateTextArea);
            centertop.setLayout(new GridLayout(6,1));
            add(centertop, BorderLayout.NORTH);
            centermiddle = new JPanel();
            centermiddle.setLayout(new GridLayout(1,1));
            centermiddle.add(CommentsTextArea);
            add(centermiddle, BorderLayout.CENTER);
            centerbottom = new JPanel();
            centerbottom.setLayout(new GridLayout(1,3));
            centerbottom.add (Save);
            centerbottom.add(Retrieve);
            add(centerbottom, BorderLayout.SOUTH);
            ButtonHandler handler = new ButtonHandler();
            Save.addActionListener( handler);
            Retrieve.addActionListener(handler);
        private class ButtonHandler implements ActionListener
            public void actionPerformed(ActionEvent event)
                String Namein = NameTextArea.getText();
                int Lessonin = Integer.parseInt(LessonTextArea.getText());
                if(event.getSource()==Save)
                    String Datein = DateTextArea.getText();
                     String Commentsin = CommentsTextArea.getText();
                   DMO.Save(Namein, Datein, Commentsin, Lessonin);
                if(event.getSource()==Retrieve)
                    if(Lessonin >= 1 && Lessonin <= 10)
                       LessonRecord r = (DMO.Retrieve(Namein, Lessonin));
                       System.out.println("Retrieve:"+ r.Comment+":"+r.Date);
                    else
                        String errormess = "Lesson Number must be between 1 and 10!";
                        CommentsTextArea.setText(errormess);
    /*DataManager.java*/
    import java.io.*;
    import java.util.*;
    public class DataManager implements Serializable
        //private String Path = "P:\\D00766703\\CET431\\Assign5";
        private String Path = "C:/Java";
        FileInputStream fin;
        FileOutputStream fout;
        ObjectInputStream oin;
        ObjectOutputStream oout;
        public LessonRecord Retrieve(String name, int lesson)
            String itemFile = Path + name + ".ser";
            File f = new File(itemFile);
            LessonRecord[] r=null;
            if (f.exists() == true)
                try
                    if(fin == null)
                        fin = new FileInputStream(itemFile);
                        oin = new ObjectInputStream(fin);
                    r= (LessonRecord[])oin.readObject();
                    System.out.println(r[lesson-1].Comment+":"+r[lesson-1].Date);
                catch(IOException ioe)
                    System.out.print(ioe);
                  catch(ClassNotFoundException c){
                    c.printStackTrace();
                finally
                    try {
                        if(fin!=null)fin.close();
                        if(oin!=null)oin.close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
            else
                LessonRecord LR = new LessonRecord();
                LR.Date = " ";
                LR.Comment = "File Not Found";
                return LR;
        /*create file object for Path\\Name
         *if file exists
         *  create fileinputstream
         *  create objectinputstream - oin
         *  read array of lesson records
         *  LessonRecord |r[] = oin.readObject();    need cast to array here
         *  close object input stream and file input stream
         *  return |r[lesson - 1];
         *else file does NOT EXIST
         *  LessonRecord LR = new LessonRecord();
         *  LR.date = " ";
         *  LR.comment = error message;
         *  return LR;
      return r[lesson - 1];
        public void Save(String name, String date, String comment, int lesson)
            String itemFile = Path + name + ".ser";
            File f = new File(itemFile);
            LessonRecord r[]=new LessonRecord[10];
            if (f.exists() == true)
                try
                    fin = new FileInputStream(itemFile);
                    oin = new ObjectInputStream(fin);
                     r = (LessonRecord[])oin.readObject();
                catch(IOException ioe)
                    System.out.print(ioe);
                catch(ClassNotFoundException c){
                    c.printStackTrace();
                finally
                    try {
                        if(fin!=null)fin.close();
                        if(oin!=null)oin.close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
            else
                r = new LessonRecord[10];
       try
            r[lesson - 1] = new LessonRecord(date, comment);
            fout = new FileOutputStream(itemFile);
            oout = new ObjectOutputStream(fout);
            oout.writeObject(r);
            oout.flush();
       catch(IOException ioe)
            finally
                try {
                    if(fout!=null)fout.close();
                    if(oout!=null)oout.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
        /*create file object for Path\\Name
         *LessonRecord |r[];
         *if file exists
         *  create fileinputstream
         *  create objectinputstream - oin
         *  read array of lesson records
         *  LessonRecord |r[] = oin.readObject();    need cast to array here
         *  close object input stream and file input stream
         *else
         *  |r = new LessonRecord[10];
         *|r[lesson - 1] = new LessonRecord(date, comment);
         *createfileoutputstream(BaseDir\\Name);
         *createobjectoutputstream - oout
         *oout.write(|r);
         *closeobjectstream
         *closefilestream
    }main.java and LessonRecord.java does not have any changes so you use the old code....
    Thanks
    Edited by: rajaram on Sep 28, 2007 1:24 PM

  • Using two ports or Using two Input / Outputs

    I'm explaining my project. It s almost done. I send message and data to server and it is stored in server. From the begining I'm using
    BufferedReader - PrintWriterAnd I cannot send files because they are binary. I have to use
    BufferedInputStream - BufferedOutputStreamI cannot change my input / output. So I found two solutions:
    1) Connecting from another port with another socket. -> Using this it blames the ports. I cannot transfer anything from my first port.
    2) Using another input / output streams from the same port. -> I didn't tried it . Does anyone tried this. Is it possible to do this.
    That's the end of my project. I will give the name of project who gives me a good answer :D
    Best Regards, Bulent.

    I cannot change my input / output. Why not?
    So I found two solutions:
    1) Connecting from another port with another
    er socket. -> Using this it blames the ports. I
    cannot transfer anything from my first port.Huh? Unless the server stops you, there is nothing in sockets that prevents you, as a client, from connecting to the server twice.
    2) Using another input / output streams from the
    he same port. -> I didn't tried it . Does anyone
    tried this. Is it possible to do this. Nothing stops you from using an InputStream to create two different buffered solutions.
    I wouldn't even attempt this myself. It would create a very fragile application. But you could try it. You would need to carefully control when the two connections were used and in particular when they were closed. You could do this by wrapping both in a class.

  • How to execute function takes user defined type parameters as input &output

    Hi All,
    I want to execute a function which takes user defined type as input & output parameters. But i don't know how to execute that function in pl/sql statements.
    CREATE TYPE T_INPUT AS OBJECT
    USER          VARCHAR2(255),
    APPLICATION     VARCHAR2(255),
    REFERENCE          VARCHAR2(30)
    ) NOT FINAL;
    CREATE TYPE T_ID UNDER T_INPUT
    E_ID                    VARCHAR2 (50),
    CODE                    VARCHAR2 (3),
    SERVICE                    VARCHAR2 (10),
    C_TYPE                    VARCHAR2 (1)
    ) NOT FINAL;
    CREATE TYPE T_OUTPUT AS OBJECT
         R_STATUS               NUMBER(10),
         E_DESC_LANG_1          VARCHAR2(1000),
         E_DESC_LANG_2          VARCHAR2(1000),
         A_REFERENCE          VARCHAR2(30)
    ) NOT FINAL;
    CREATE TYPE T_INFO UNDER T_OUTPUT
    E_INFO XMLTYPE
    CREATE FUNCTION Get_Dtls
    I_DETAILS IN T_ID,
    O_DETAILS OUT T_INFO
    RETURN NUMBER AS
    END;
    Here
    1. T_ID is an input parameter which is a combination of T_ID + T_INPUT,
    2. T_INFO is an output parameter which is a combination of T_INFO + T_OUTPUT.
    Here i'll assign the T_ID values.
    --- T_INPUT values
    USER          = "admin";
    APPLICATION     = "test";
    REFERENCE     = "null";
    ---- T_ID values
    E_ID               = "1234";
    CODE               = "TTT";
    SERVICE               = "NEW";
    C_TYPE = "P";
    Now i want to execute Get_Dtls function with T_ID,T_INFO parameters in pl/sql statements.
    I want to catch the E_INFO value from T_INFO type.
    How can i Do this ?
    Pls Help. Thanxs in advance.
    Anil.

    I am very new to this. New to Oracle, PL/SQL, OO programming or testing?
    set serveroutput on
    declare
      tst_obj ctype;
    begin
      tst_obj := pkg.proc(11);
      dbms_output.put_line('id='||tst_obj.id||'::code='||tst_obj.code||'::usage='||tst_obj.usage);
    end;
    /Generally I disapprove of the use of DBMS_OUTPUT (for just about anything) but it is sufficient to demonstrate the basic principle.
    Really you should start using proper testing practices, ideally with an automated test harness like QUTE.
    Cheers, APC
    Blog : http://radiofreetooting.blogspot.com/

  • How to bind complex input/output types in web service data control

    Hi,
    I have created data control using external web service for simple input & output data type and its working fine.
    But I don't know how it can be done for complex data types.
    My external Web services have complex input & output types. Such as java object which contains another java object again it contains another java object or arry or java collection etc.
    Each my service has one complex input data type and for this no user input is require so how I can do it without using any component for it.
    I want to bind my page components with this input & output type.
    What is the best approach to do this and how to bind screen component.
    Regards,
    Devang

    Hi,
    Thanks frank.
    I already check this link before posting this so if you have any other link then kindly reply.
    Regards,
    Devang

  • Input/Output And Method Not Found Problem

    Ok so firstly I think I should apologise on two fronts.
    Firstly, 'cause this is probably posted in the wrong board but I'm not sure this was suitable for the Swing board just 'cause I've been using Swing? And secondly 'cause the code I'm gonna post is so shoddy I would think this constitutes as flaim-bait. >_>
    In my defense this is purely for a little class project to give something to write some documentation on so I'm really not too bothered about the efficiency or ace-mazingness of the end result. I just want it to work.
    To the problem at hand.
    I'm trying to write a program that asks the user a question and then outputs their answer to a file, from which a tally of answers can later be made for the purpose of displaying "results".
    My problem is I've been having problems with the input/output of saving the answers given to the program.
    I'm still learning and input/output is probably my weakest subject (other than, y'know, being good at Java). I've had a bash at it in the following code but all it does it overwrite what is in the file with a single answer so no list of results accumulate. I generally don't have an idea what to try for that one so any pointers would be appreciated.
    Also, my second problem is, in trying to gather results by tallying what is contained in the file, I've run across a problem with the charAt() method not being found and I'm not sure why. Isn't that method a part of java.lang?
    Here's the code thus far:
    //libraries
    import javax.swing.*;
    import javax.swing.border.*;
    import javax.swing.text.*;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.text.*;
    import java.io.*;
    class CaseStudy {
         public static void main(String args[]) {
              GUI maininterface = new GUI();
              maininterface.setupMenu();
              maininterface.display();
    class GUI {
         //for the actionlisteners
         int whatframe = 0;
         //creates mainframe and border content panel
         JFrame mainframe = new JFrame("Survey Client");
         JPanel borderpanel = new JPanel(), bottompanel = new JPanel();
         JButton quizbutton = new JButton("Take the quiz"), tallybutton = new JButton("Show Results"), submitbutton = new JButton("Submit Results"), menubutton = new JButton("Return To Menu");
         QuizQuestions toppanel = new QuizQuestions();
         QuizResults toppanel2 = new QuizResults();
         GUI() {
              //sets border in borderpanel, this spaces the main content in from the sides of the window
              borderpanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
              //sets up the frame and panels and adds on borders
              mainframe.setDefaultCloseOperation(mainframe.EXIT_ON_CLOSE); // exits java when clicking on close on main frame
              mainframe.getContentPane().add(borderpanel); // adds the panel as a component to the frame, the panel can hold stuffs
              borderpanel.setLayout(new BoxLayout(borderpanel, BoxLayout.PAGE_AXIS));// page_axis means it'll layout vertically
              bottompanel.setLayout(new BoxLayout(bottompanel, BoxLayout.LINE_AXIS));// line_axis means it'll layout horizontally
              //gives button an action
              quizbutton.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        setupQuiz();
              tallybutton.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        if(whatframe == 1) setupResults();
                        else {
                             int rusure = JOptionPane.showConfirmDialog(null, "Are you sure you wish to show results? Any current quiz answers won't be saved.", "Please Choose One", JOptionPane.YES_NO_OPTION);
                             if(rusure == JOptionPane.YES_OPTION) setupResults();
              menubutton.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        setupMenu();
              submitbutton.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        toppanel.doQuiz();
              borderpanel.add(bottompanel);
         public void setupMenu() {
              if(whatframe == 3) {
                   bottompanel.remove(menubutton);
                   borderpanel.remove(toppanel2);
              whatframe = 1;
              //adds components and lays them out
              bottompanel.add(quizbutton);
              bottompanel.add(Box.createRigidArea(new Dimension(0,10)));
              bottompanel.add(tallybutton);
              display();
         public void setupQuiz() {
              bottompanel.remove(quizbutton);
              bottompanel.remove(Box.createRigidArea(new Dimension(0,10)));
              bottompanel.remove(tallybutton);
              whatframe = 2;
              bottompanel.add(submitbutton);
              bottompanel.add(Box.createRigidArea(new Dimension(0,10)));
              bottompanel.add(tallybutton);
              borderpanel.add(toppanel);
              display();
         public void setupResults() {
              if(whatframe == 1) {
                   bottompanel.remove(quizbutton);
                   bottompanel.remove(Box.createRigidArea(new Dimension(0,10)));
                   bottompanel.remove(tallybutton);
              else {
                   bottompanel.remove(submitbutton);
                   bottompanel.remove(Box.createRigidArea(new Dimension(0,10)));
                   bottompanel.remove(tallybutton);
                   borderpanel.remove(toppanel);
              whatframe = 3;
              bottompanel.add(menubutton);
              borderpanel.add(toppanel2);
              display();
         public void display() {
              //sets the size of the frame around it's components and then shows it
              mainframe.pack();
              mainframe.setVisible(true);
              mainframe.validate(); //makes referenced container relayout it's components
    class QuizQuestions extends JPanel {
         LoadingSaving loadsave = new LoadingSaving();
         JPanel popm = new JPanel(), pop1 = new JPanel(), pop2 = new JPanel(), pop3 = new JPanel(), pop4 = new JPanel();
         JFormattedTextField ques = new JFormattedTextField(), op1 = new JFormattedTextField(), op2 = new JFormattedTextField(), op3 = new JFormattedTextField(), op4 = new JFormattedTextField();
         JButton bop1 = new JButton("1"), bop2 = new JButton("2"), bop3 = new JButton("3"), bop4 = new JButton("4");
         char answer;
         QuizQuestions() {
              popm.setLayout(new BoxLayout(popm, BoxLayout.PAGE_AXIS));
              pop1.setLayout(new BoxLayout(pop1, BoxLayout.LINE_AXIS));
              pop2.setLayout(new BoxLayout(pop2, BoxLayout.LINE_AXIS));
              pop3.setLayout(new BoxLayout(pop3, BoxLayout.LINE_AXIS));
              pop4.setLayout(new BoxLayout(pop4, BoxLayout.LINE_AXIS));
              this.add(popm);
              popm.add(ques);
              popm.add(pop1);
              popm.add(pop2);
              popm.add(pop3);
              popm.add(pop4);
              pop1.add(op1);
              pop1.add(bop1);
              pop2.add(op2);
              pop2.add(bop2);
              pop3.add(op3);
              pop3.add(bop3);
              pop4.add(op4);
              pop4.add(bop4);
              //sets up question text fields
              ques.setEditable(false);
              op1.setEditable(false);
              op2.setEditable(false);
              op3.setEditable(false);
              op4.setEditable(false);
              bop1.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        answer = 'a';
              bop2.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        answer = 'b';
              bop3.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        answer = 'c';
              bop4.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e1) {
                        answer = 'd';
              Question1();
         public void doQuiz() {
              loadsave.save(answer);
         public void Question1() {
              ques.setValue("Who's your favourite X-Men character?");
              op1.setValue("Cyclops");
              op2.setValue("Xavier");
              op3.setValue("Wolverine");
              op4.setValue("Rogue");
    class QuizResults extends JPanel {
         LoadingSaving loadsave = new LoadingSaving();
         JPanel popm = new JPanel();
         JFormattedTextField op1 = new JFormattedTextField(), op2 = new JFormattedTextField(), op3 = new JFormattedTextField(), op4 = new JFormattedTextField();
         int[] answerarray = new int[4];
         QuizResults() {
              popm.setLayout(new BoxLayout(popm, BoxLayout.PAGE_AXIS));
              this.add(popm);
              popm.add(op1);
              popm.add(op2);
              popm.add(op3);
              popm.add(op4);
              op1.setEditable(false);
              op2.setEditable(false);
              op3.setEditable(false);
              op4.setEditable(false);
              answerarray = loadsave.load();
              op1.setValue(answerarray[0]);
              op2.setValue(answerarray[1]);
              op3.setValue(answerarray[2]);
              op4.setValue(answerarray[3]);
    class LoadingSaving {
         public void save(char answer) {
              FileReader fr;
              FileWriter fw;
              BufferedReader br;
              String s;
              try {
              //ERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERROR
                   fr = new FileReader("casestudyoutput.txt");
                   fw = new FileWriter("casestudyoutput.txt");
                   br = new BufferedReader(fr);
                   if (br.readLine() == null) s = "x";
                   else s = br.readLine();
                   s = s + answer;
                   fw.write(s);
                   fr.close();
                   fw.close();
              //ERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERROR
              catch(FileNotFoundException exc) {
                   JOptionPane.showMessageDialog(null, "File not found.");
                   return;
              catch(IOException exc) {
                   JOptionPane.showMessageDialog(null, "Something bad happened.");
                   return;
         public int[] load() {
              FileReader fr;
              BufferedReader br;
              int[] answerarray = new int[3];
              String s;
              long length;
              int a = 0, b = 0, c = 0, d = 0;
              answerarray[0] = 0;
              answerarray[1] = 0;
              answerarray[2] = 0;
              answerarray[3] = 0;
              try {
                   fr = new FileReader("casestudyoutput.txt");
                   br = new BufferedReader(fr);
                   if (br.readLine() == null) return answerarray;
                   else s = br.readLine();
                   length = s.length();
                   for(int i = 0; i < length; i++) {
                        char ch = charAt(i); //ERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERRORERROR
                        switch(ch) {
                             case 'a':
                                  a++;
                                  break;
                             case 'b':
                                  b++;
                                  break;
                             case 'c':
                                  c++;
                                  break;
                             case 'd':
                                  d++;
                                  break;
                   answerarray[0] = a;
                   answerarray[1] = b;
                   answerarray[2] = c;
                   answerarray[3] = d;
                   fr.close();
              catch(FileNotFoundException exc) {
                   JOptionPane.showMessageDialog(null, "File not found.");
                   return answerarray;
              catch(IOException exc) {
                   JOptionPane.showMessageDialog(null, "Something bad happened.");
                   return answerarray;
         return answerarray;
    }Any pointers/tips/solutions/angry posts to tell me to stop trying to learn Java would be greatly appreciated.
    Thanks in advance!
    Oh, and in trying to work with it a bit further I realised I'm having a few problems with runtime errors due to exceptions. The first was due to the array being assigned out of bounds (fixed in the above code). But the second reads the following:
    Exception in thread "main" java.lang.NullPointerException
         at Loadingsaving.load(CaseStudy.java:330)
         at QuizResults.(init)(CaseStudy.java.259)
         at GUI.(init)(CaseStudy.java:34)
         at CaseStudy.main(CaseStudy.java:15)Not quite sure what this one means or how to handle it. =\
    Edited by: ThePermster on May 19, 2008 8:08 AM

    A NullPointerException means a method has been called on a null object, or a variable that isn't pointing to any object. Your Exception points to line 330, which is:
    length = s.length();A NPE on that line means that s is null. So let's look at where s is set:
    if (br.readLine() == null) return answerarray;
    else s = br.readLine();s gets it's value from br.readLine(), so that method must be returning null. You have a logical error here. Look at your If-Else. It reads a line, makes sure it isn't null...then it reads another line. Well what if that line is null? You are performing 2 reads here instead of 1.
    Since your If condition returns a value, there's no need for an Else. The code will continue on until it reaches another return. Try this:
    s = br.readLine();
    if (s == null) return answerarray;

  • How to automatically retrieve a task Input/Output structure in SAPUI5?

    Hi guys,
    I am trying to figure out a way to automatically retrieve the complex type specified as a task input/output without hard coding the name of the complex type. So far I have a process with two reporting activities and a task, built as a custom technologies with specified Input and Output from the process context. Then I built a UI where I created an OData model, whose properties I bound to properties of the model, but this happened by exactly specifying the name of the complex type in the controller:
    // bind customer data (i.e. the task input data) to the panel
      customerDataPanel.bindElement("/InputData('" + taskId + "')", {expand : "Customer"});
    and the exact attribute names in the view:
      oMatrix.createRow(
       new sap.ui.commons.Label({text : "First Name", design : sap.ui.commons.LabelDesign.Bold }),
       // property binding of a text field to the attribute in Customer object
       new sap.ui.commons.TextField({value : "{Customer/firstName}"})//property binding
       oMatrix.createRow(
       new sap.ui.commons.Label({text : "Last Name", design : sap.ui.commons.LabelDesign.Bold }),
       new sap.ui.commons.TextField({value : "{Customer/lastName}"})//property binding
       oMatrix.createRow(
       new sap.ui.commons.Label({text : "Street", design : sap.ui.commons.LabelDesign.Bold }),
       new sap.ui.commons.TextField({value : "{Customer/address-street}"})//property binding
       oMatrix.createRow(
      new sap.ui.commons.Label({text : "City", design : sap.ui.commons.LabelDesign.Bold }),
      new sap.ui.commons.TextField({value : "{Customer/address-city}"})//property binding
       oMatrix.createRow(
      new sap.ui.commons.Label({text : "Zip", design : sap.ui.commons.LabelDesign.Bold }),
      new sap.ui.commons.TextField({value : "{Customer/address-zip}"})//property binding
       oMatrix.createRow(
      new sap.ui.commons.Label({text : "Country", design : sap.ui.commons.LabelDesign.Bold }),
      new sap.ui.commons.TextField({value : "{Customer/address-country}"})//property binding
       oMatrix.createRow(
      new sap.ui.commons.Label({text : "Currency", design : sap.ui.commons.LabelDesign.Bold }),
      new sap.ui.commons.TextField({value : "{Customer/currency}"})   //property binding
      oMatrix.createRow(
        new sap.ui.commons.Label({text : "RequestNr", design : sap.ui.commons.LabelDesign.Bold }),
        new sap.ui.commons.TextField({value : "{Customer/requestNr}"})   //property binding
    Is it possible for this binding to happen automatically in some kind of way without me specifying every single attribute name? As you can imagine in a real project, there will be even more complex types used in the UI and it is not feasible at all to have to specify each and every single attribute's name.
    Any suggestions will be much appreciated.

    Hi Deepa,
    How about adding another action to the "Add Company" Button which will also trigger the search?
    See:
    http://help.sap.com/saphelp_nwce711/helpdata/en/48/17fbc3a3050be8e10000000a42189d/frameset.htm
    And:
    http://help.sap.com/saphelp_nwce711/helpdata/en/ae/facedea03743f18aaf2edf12465fd8/frameset.htm
    For more details.
    Hope this helps.
    Regards.
    Omer.

  • Help with Input/Output Parameter Size using OLE DB Provider

    I am using the OLE DB Provider for 9i in an Active Server Page to call a stored procedure in a 9i database. I pass have an input/output parameter (adVarChar with adSize=30) in which I pass a two digit number in, and expect to get a character value greater than 2 characters in return. However, when I execute the stored procedure call, it appears the value being returned in the parameter is being truncated to the size of the value I passed in (2 characters). Is there a way I can insure the parameter will return the entire length of the result regardless of the length of the input value?

    cmd.Parameters.Add("retstatus", OracleDbType.Varchar2, 200, ParameterDirection.InputOutput); It seems to me that you're trying to use an OracleParameter constructor with parameter name, parameter type, parameter SIZE, and parameter direction. But OracleParameter class does not have any such constructor. Therefore, your test tries to use another constructor incorrectly.
    OracleParameter has two constructors with four parameter ...
    public OracleParameter(string parameterName, OracleDbType type, object obj, ParameterDirection direction)
    public OracleParameter(string parameterName, OracleDbType type, int size, string srcColumn)
    ... and none of these matches your constructor. One way to solve this problem is to use appropriate constructor or OracleParameter properties.

Maybe you are looking for

  • I can not import to iPad from iTunes some of my presentations.

    I cannot import to iPad from iTunes some of my presentations. I get this message:"Presentation couldn't be imported. An error occurred." That's it? I am blank off at Steve. Why cannot I simply drag and drop like any other decent software can from my

  • WS_DOWNLOAD and line item with more than 1024 characters

    I want to download a file with line size greater than 1024. I am in version 40B and when i use function module ws_download and it creates two lines instead of one. Is there a solution with another function module or something else?

  • How to call java method in jsp file?

    can anyone guide me or teach me how can i call the java method into the jsp file? do i need a main method to call it in? or just call the method that i need 2 use only?? below is the coding that i did. one is java and another one is jsp. hope that so

  • Missed RH8 upgrade

    We purchased RoboHelp 7 on May 7, 2008, with order # AD001542272, less than a year ago. We bought RoboHelp because we wanted an easy to use HTML editor that: • Imports from Word • Creates .pdf files We found out the hard way that RoboHelp does not im

  • Sysaux tablespace usage

    Hi As far as SYSAUX tablespace is concerned, I know that sysaux tablespace contain the objects of important schemas which are not directly related to user's operation and it is created at the time of database creation. Can we create the database with