How do I configure Tomcat to write to a Serial Port?

Discussion in 'Java' started by D, Oct 2, 2004.

  1. D

    D Guest

    Has anyone managed to get Tomcat to send to a serial port?

    I've downloaded and installed the Java Communications API (version 2)
    and Tomcat 5.0.25. Both work separately. The whole lot uses Java
    1.4.0.

    My servlet is below, but when I invoke it, I get a log and an
    exception:
    "Serial port is already in use."
    javax.servlet.ServletException
    comms.Send.init(Send.java:55)
    javax.servlet.GenericServlet.init(GenericServlet.java:211)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
    java.lang.Thread.run(Thread.java:536)

    At some point, I'm going to need to find a way of limiting the
    poolsize for
    this servlet to 1 only too.


    Cheers
    D.

    --------------------------------
    Source:
    package comms;



    import java.io.IOException;
    import java.io_OutputStream;
    import java.io.PrintWriter;
    import java.util.Enumeration;

    import javax.comm.*;
    import javax.servlet.ServletException;
    import javax.servlet.SingleThreadModel;
    import javax.servlet.http.*;


    public class Send extends HttpServlet implements SingleThreadModel

    {
    /** The output stream which writes to the Com port. */
    PrintWriter out = null;

    public void init() throws ServletException
    {
    // Open the serial port.
    Enumeration portList = CommPortIdentifier.getPortIdentifiers();

    while (portList.hasMoreElements())
    {
    CommPortIdentifier portId = (CommPortIdentifier)
    portList.nextElement();
    if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
    {
    //if (portId.getName().equals("/dev/term/a")) {
    if (portId.getName().equals("COM1"))
    {
    SerialPort serialPort = null;
    try
    {
    serialPort = (SerialPort)(portId.open("SendApplet",
    2000));
    out = new PrintWriter(serialPort.getOutputStream());
    serialPort.setSerialPortParams(9600,

    SerialPort.DATABITS_8,

    SerialPort.STOPBITS_1,

    SerialPort.PARITY_NONE);
    }
    catch (PortInUseException e)
    {
    System.out.println("Serial port is already in
    use.");
    throw(new ServletException());
    }
    catch (IOException e)
    {
    System.out.println("Failed to connect to output
    stream.");
    throw(new ServletException());
    }
    catch (UnsupportedCommOperationException e)
    {
    System.out.println("Failed to set comms params.");
    throw(new ServletException());
    }
    }
    }
    }
    }

    public void destroy()
    {
    // Release the serial port.
    }

    public void doGet(HttpServletRequest req, HttpServletResponse resp)
    {
    System.out.println("doGet.");
    doWork(req, resp);
    }

    public void doPost(HttpServletRequest req, HttpServletResponse
    resp)
    {
    System.out.println("doPost.");
    doWork(req, resp);
    }

    public void doWork(HttpServletRequest req, HttpServletResponse
    resp)
    {
    // Take the msg param and send it to COM1.
    String msg = req.getParameter("msg");
    System.out.println("Sending["+msg+"].");
    if (msg != null)
    {
    out.println(msg);
    }
    }
    }
     
    D, Oct 2, 2004
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. SoftwareTester
    Replies:
    9
    Views:
    9,351
    Bengt Richter
    Nov 18, 2004
  2. Pom
    Replies:
    2
    Views:
    1,772
    Bas-i
    Jan 31, 2007
  3. Tom Van Ginneken

    write binary data to serial port

    Tom Van Ginneken, Jul 23, 2004, in forum: C Programming
    Replies:
    4
    Views:
    1,233
  4. collinm

    Read Write serial port

    collinm, Mar 21, 2005, in forum: C Programming
    Replies:
    0
    Views:
    655
    collinm
    Mar 21, 2005
  5. msalerno
    Replies:
    3
    Views:
    431
    Ilmari Karonen
    Jul 14, 2005
Loading...

Share This Page