2
* JBoss, Home of Professional Open Source
3
* Copyright 2005, JBoss Inc., and individual contributors as indicated
4
* by the @authors tag. See the copyright.txt in the distribution for a
5
* full listing of individual contributors.
7
* This is free software; you can redistribute it and/or modify it
8
* under the terms of the GNU Lesser General Public License as
9
* published by the Free Software Foundation; either version 2.1 of
10
* the License, or (at your option) any later version.
12
* This software is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with this software; if not, write to the Free
19
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
23
package org.jboss.test.remoting.stream;
25
import java.io.ByteArrayOutputStream;
26
import java.io.IOException;
27
import java.io.InputStream;
29
import java.util.HashMap;
30
import javax.management.MBeanServer;
32
import org.apache.log4j.Logger;
33
import org.jboss.jrunit.extensions.ServerTestCase;
34
import org.jboss.remoting.InvocationRequest;
35
import org.jboss.remoting.InvokerLocator;
36
import org.jboss.remoting.ServerInvoker;
37
import org.jboss.remoting.callback.InvokerCallbackHandler;
38
import org.jboss.remoting.stream.StreamInvocationHandler;
39
import org.jboss.remoting.transport.Connector;
42
* @author <a href="mailto:tom.elrod@jboss.com">Tom Elrod</a>
44
public class StreamingTestServer extends ServerTestCase
46
private static Logger log = Logger.getLogger(StreamingTestServer.class);
48
// Default locator values
49
private static String transport = "socket";
50
private static String host = "localhost";
51
private static int port = 5400;
53
private String locatorURI;
54
private Connector connector = null;
56
public void setupServer() throws Exception
58
String bindAddr = System.getProperty("jrunit.bind_addr", host);
59
locatorURI = transport + "://" + bindAddr + ":" + port;
60
InvokerLocator locator = new InvokerLocator(locatorURI);
61
log.info("Starting remoting server with locator uri of: " + locatorURI);
62
connector = new Connector();
63
connector.setInvokerLocator(locator.getLocatorURI());
66
TestStreamInvocationHandler invocationHandler = new TestStreamInvocationHandler();
67
// first parameter is sub-system name. can be any String value.
68
connector.addInvocationHandler("test_stream", invocationHandler);
71
log.info("Started remoting server with locator uri of: " + locatorURI);
74
protected void setUp() throws Exception
79
protected void tearDown() throws Exception
89
* Can pass transport and port to be used as parameters.
90
* Valid transports are 'rmi' and 'socket'.
94
public static void main(String[] args)
96
if(args != null && args.length == 3)
100
port = Integer.parseInt(args[2]);
103
StreamingTestServer server = new StreamingTestServer();
108
// sleep the thread for 10 seconds while waiting for client to call
120
* Simple invocation handler implementation.
122
public static class TestStreamInvocationHandler implements StreamInvocationHandler
124
private InputStream stream = null;
126
private int streamSize = 0;
129
* called to handle a specific invocation
135
public Object invoke(InvocationRequest invocation) throws Throwable
137
// Print out the invocation request
138
log.info("Invocation request is: " + invocation.getParameter());
140
// Just going to return static string as this is just simple example code.
141
return new Integer(streamSize);
145
* Adds a callback handler that will listen for callbacks from
146
* the server invoker handler.
148
* @param callbackHandler
150
public void addListener(InvokerCallbackHandler callbackHandler)
152
// NO OP as do not handling callback listeners in this example
156
* Removes the callback handler that was listening for callbacks
157
* from the server invoker handler.
159
* @param callbackHandler
161
public void removeListener(InvokerCallbackHandler callbackHandler)
163
// NO OP as do not handling callback listeners in this example
167
* set the mbean server that the handler can reference
171
public void setMBeanServer(MBeanServer server)
173
// NO OP as do not need reference to MBeanServer for this handler
177
* set the invoker that owns this handler
181
public void setInvoker(ServerInvoker invoker)
183
// NO OP as do not need reference back to the server invoker
186
public Object handleStream(InputStream stream, InvocationRequest param)
188
this.stream = stream;
192
ByteArrayOutputStream out = new ByteArrayOutputStream();
193
byte buf[] = new byte[4096];
196
int c = this.stream.read(buf);
201
out.write(buf, 0, c);
203
byte[] bytes = out.toByteArray();
204
streamSize = bytes.length;
205
log.info("Read stream. Contents is: " + new String(bytes));
223
Map retMap = new HashMap();
224
retMap.put("subsystem", param.getSubsystem());
225
retMap.put("clientid", param.getSessionId());
226
retMap.put("paramval", param.getParameter());
b'\\ No newline at end of file'