private void initOut() { Element persist = getPersist(); outQueue = persist.getChildText("out"); if (outQueue != null) { /* * We have an 'out' queue to send any messages to that are received * by the our requestListener(this). * * Note, if additional ISORequestListeners are registered with the server after * this point, then they won't see anything as our process(ISOSource, ISOMsg) * always return true. */ server.addISORequestListener(this); } } @Override
public static void configureFilter(FilterISOMsg filter, ISOServer server) { ISOChannel c = server.clientSideChannel != null ? server.clientSideChannel : server.getISOChannel(":last"); c = (c != null ? (ISOChannel) c.clone() : null); filter.configure((BaseChannel) c, server.listeners); if (filter.getPackager() == null) { filter.setPackager(server.clientPackager); } filter.setPort(server.getPort()); }
@Override public void stopService () { if (server != null) { server.shutdown (); sp.removeListener(inQueue, this); } } @Override
@Override public String getCountersAsString (String isoChannelName) { ISOChannel channel = getISOChannel(isoChannelName); StringBuffer sb = new StringBuffer(); if (channel instanceof BaseChannel) { int[] counters = ((BaseChannel)channel).getCounters(); append (sb, "rx=", counters[ISOChannel.RX]); append (sb, ", tx=", counters[ISOChannel.TX]); append (sb, ", connects=", counters[ISOChannel.CONNECT]); } return sb.toString(); } @Override
private ISOServer newIsoServer() throws IOException, ISOException { XMLChannel clientSide = new XMLChannel(new XMLPackager()); clientSide.setLogger(logger, "server.channel"); ISOServer isoServer = new ISOServer(PORT, clientSide, new ThreadPool()); isoServer.setSocketFactory(new SunJSSESocketFactory()); isoServer.setConfiguration(serverConfiguration()); isoServer.setLogger(logger, "server"); isoServer.addISORequestListener(new TestListener()); return isoServer; }
pool.setLogger (log.getLogger(), getName() + ".pool"); server = new ISOServer (port, (ServerChannel) channel, pool); server.setLogger (log.getLogger(), getName() + ".server"); server.setName (getName ()); if (socketFactoryString != null) { ISOServerSocketFactory sFac = (ISOServerSocketFactory) getFactory().newInstance(socketFactoryString); ((LogSource) sFac).setLogger(log.getLogger(),getName() + ".socket-factory"); server.setSocketFactory(sFac);
try { serverSocket.close(); fireEvent(new ISOServerShutdownEvent(this)); } catch (IOException e){ Logger.log (new LogEvent (this, "iso-server", e)); relax(); purgeChannels (); pool.execute (createSession(channel)); setChanged (); notifyObservers (this); fireEvent(new ISOServerAcceptEvent(this, channel)); if (channel instanceof Observable) { ((Observable)channel).addObserver (this); if (!shutdown) { Logger.log (new LogEvent (this, "iso-server", e)); relax(); continue serverLoop; relax(); relax();
if ("LAST".equals(sendMethod)) { try { ISOChannel c = server.getLastConnectedISOChannel(); if (c == null) { throw new ISOException("Server has no active connections"); while (tok.hasMoreTokens()) { try { ISOChannel c = server.getISOChannel(tok.nextToken()); if (c == null) { throw new ISOException("Server has no active connections"); ISOChannel c = server.getISOChannel(channelName[msgn.incrementAndGet() % channelName.length]); if (c == null) { throw new ISOException("Server has no active connections");
/** * @return most recently connected ISOChannel or null */ public ISOChannel getLastConnectedISOChannel () { return getISOChannel (LAST); }
@Test public void testConstructorThrowsNullPointerException() throws Throwable { try { new ISOServer(100, null, null); fail("Expected NullPointerException to be thrown"); } catch (NullPointerException ex) { assertNull("ex.getMessage()", ex.getMessage()); } }
private void addServerSocketFactory () throws ConfigurationException { QFactory factory = getFactory (); Element persist = getPersist (); Element serverSocketFactoryElement = persist.getChild ("server-socket-factory"); if (serverSocketFactoryElement != null) { ISOServerSocketFactory serverSocketFactory = (ISOServerSocketFactory) factory.newInstance (serverSocketFactoryElement.getAttributeValue ("class")); factory.setLogger (serverSocketFactory, serverSocketFactoryElement); factory.setConfiguration (serverSocketFactory, serverSocketFactoryElement); server.setSocketFactory(serverSocketFactory); } }
private void addISOServerConnectionListeners() throws ConfigurationException { QFactory factory = getFactory (); Iterator iter = getPersist().getChildren ( "connection-listener" ).iterator(); while (iter.hasNext()) { Element l = (Element) iter.next(); ISOServerEventListener listener = (ISOServerEventListener) factory.newInstance (l.getAttributeValue ("class")); factory.setLogger (listener, l); factory.setConfiguration (listener, l); server.addServerEventListener(listener); } }
@Override public void setConfiguration (Configuration cfg) throws ConfigurationException { this.cfg = cfg; configureConnectionPerms(); backlog = cfg.getInt ("backlog", 0); ignoreISOExceptions = cfg.getBoolean("ignore-iso-exceptions"); String ip = cfg.get ("bind-address", null); if (ip != null) { try { bindAddr = InetAddress.getByName (ip); } catch (UnknownHostException e) { throw new ConfigurationException ("Invalid bind-address " + ip, e); } } if (socketFactory == null) { socketFactory = this; } if (socketFactory != this && socketFactory instanceof Configurable) { ((Configurable)socketFactory).setConfiguration (cfg); } }
HttpWrapperUtil.configureFilter(this, server); if (getPackager() == null) { BaseChannel c = (BaseChannel) server.getISOChannel(":last"); if (c != null) { channel.setChannel((BaseChannel) c.clone()); setPort(server.getPort()); setPort(server.getPort());
@Test public void serverSideDisconnect() throws Exception { ISOServer isoServer = newIsoServer(); new Thread(isoServer).start(); XMLChannel clientChannel = newClientChannel(); clientChannel.connect(); // need to push some traffic through to complete the SSL handshake clientChannel.send(new ISOMsg("0800")); assertThat(clientChannel.receive(), hasMti("0810")); isoServer.shutdown(); try { clientChannel.receive(); fail("clientChannel should be closed"); } catch (Exception e) { assertThat(e, is(instanceOf(EOFException.class))); } }
private void addListeners () throws ConfigurationException { QFactory factory = getFactory (); Iterator iter = getPersist().getChildren ( "request-listener" ).iterator(); while (iter.hasNext()) { Element l = (Element) iter.next(); ISORequestListener listener = (ISORequestListener) factory.newInstance (l.getAttributeValue ("class")); factory.setLogger (listener, l); factory.setConfiguration (listener, l); server.addISORequestListener (listener); } }