0 Replies Latest reply on Jan 29, 2008 4:27 PM by György Süveges

    streaming with jbossws with small packets, or getting HttpUr

    György Süveges Newbie


      I'm developing a hyperterminal applet, where I'd like that the user can send data to COM ports via applet, and the COM port sends data back via web-service (streaming). Is it possible to do it with JBOSSWS? I need streaming for that. But often only few bytes (even 1 byte) comes from the COM port, I would like this even 1 byte to be flushed. I don't want any buffering.
      I created a test service in that I enabled MTOM, but it's buffering, because I have to wait 10 seconds on the client side till the data arrives:

      Server side, in that I simulate the hyperterminal, after each byte I wait 1 second. It should be flushed each time :

      public class TestService {
       public @XmlMimeType("application/octet-stream") DataHandler getStream() {
       return new DataHandler(new DataSource() {
       public String getContentType() {
       return "application/octet-stream";
       public InputStream getInputStream() throws IOException {
       return new InputStream() {
       private int count = 0;
       public int read() throws IOException {
       if (count!=0)
       try {
       } catch (InterruptedException e) {
       if (count>10)
       return -1;
       return 'a';
       public String getName() {
       return "test";
       public OutputStream getOutputStream() throws IOException {
       return null;

      If there is no Binding annotation at the beginning, then the behaviour is the same

      Client Side:
      public class ConsoleTest {
       * @param args
       public static void main(String[] args) throws Exception {
       MTOMFeature feature = new MTOMFeature();
       TestServiceService service = new TestServiceService();
       TestService port = service.getTestServicePort(feature);
       Map<String, Object> ctxt = ((BindingProvider)port).getRequestContext();
       // Enable HTTP chunking mode, otherwise HttpURLConnection buffers
       ctxt.put(JAXWSProperties.HTTP_CLIENT_STREAMING_CHUNK_SIZE, 1);
       DataHandler dh = port.getStream();
       InputStream is = dh.getInputStream();
       int data;
       while ((data = is.read())>-1) {

      And I have to wait 10 seconds, till the result comes. I would except the data to come continuously.
      I don't know if it is possible.
      If not, then I would write an own servlet for that. In the real application I maintain session, so the client uses cookie, but then I would need the http client of jbossws on the client side. Can I get it somehow (What type does it have? HttpUrlConnection?)?