Java Code Examples for org.apache.catalina.tribes.io.XByteBuffer#append()
The following examples show how to use
org.apache.catalina.tribes.io.XByteBuffer#append() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: EncryptInterceptor.java From Tomcat8-Source-Read with MIT License | 6 votes |
@Override public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException { try { byte[] data = msg.getMessage().getBytes(); // See #encrypt(byte[]) for an explanation of the return value byte[][] bytes = encryptionManager.encrypt(data); XByteBuffer xbb = msg.getMessage(); // Completely replace the message xbb.clear(); xbb.append(bytes[0], 0, bytes[0].length); xbb.append(bytes[1], 0, bytes[1].length); super.sendMessage(destination, msg, payload); } catch (GeneralSecurityException gse) { log.error(sm.getString("encryptInterceptor.encrypt.failed")); throw new ChannelException(gse); } }
Example 2
Source File: EncryptInterceptor.java From Tomcat8-Source-Read with MIT License | 6 votes |
@Override public void messageReceived(ChannelMessage msg) { try { byte[] data = msg.getMessage().getBytes(); data = encryptionManager.decrypt(data); XByteBuffer xbb = msg.getMessage(); // Completely replace the message with the decrypted one xbb.clear(); xbb.append(data, 0, data.length); super.messageReceived(msg); } catch (GeneralSecurityException gse) { log.error(sm.getString("encryptInterceptor.decrypt.failed"), gse); } }
Example 3
Source File: TestEncryptInterceptor.java From Tomcat8-Source-Read with MIT License | 6 votes |
@Test public void testPickup() throws Exception { File file = new File(MESSAGE_FILE); if(!file.exists()) { System.err.println("File message.bin does not exist. Skipping test."); return; } dest.start(Channel.SND_TX_SEQ); byte[] bytes = new byte[8192]; int read; try (FileInputStream in = new FileInputStream(file)) { read = in.read(bytes); } ChannelData msg = new ChannelData(false); XByteBuffer xbb = new XByteBuffer(read, false); xbb.append(bytes, 0, read); msg.setMessage(xbb); dest.messageReceived(msg); }
Example 4
Source File: GroupChannel.java From Tomcat8-Source-Read with MIT License | 4 votes |
/** * * @param destination Member[] - destination.length > 0 * @param msg Serializable - the message to send * @param options sender options, options can trigger guarantee levels and different * interceptors to react to the message see class documentation for the * <code>Channel</code> object.<br> * @param handler - callback object for error handling and completion notification, * used when a message is sent asynchronously using the * <code>Channel.SEND_OPTIONS_ASYNCHRONOUS</code> flag enabled. * @return UniqueId - the unique Id that was assigned to this message * @throws ChannelException - if an error occurs processing the message * @see org.apache.catalina.tribes.Channel */ @Override public UniqueId send(Member[] destination, Serializable msg, int options, ErrorHandler handler) throws ChannelException { if ( msg == null ) throw new ChannelException(sm.getString("groupChannel.nullMessage")); XByteBuffer buffer = null; try { if (destination == null || destination.length == 0) { throw new ChannelException(sm.getString("groupChannel.noDestination")); } ChannelData data = new ChannelData(true);//generates a unique Id data.setAddress(getLocalMember(false)); data.setTimestamp(System.currentTimeMillis()); byte[] b = null; if ( msg instanceof ByteMessage ){ b = ((ByteMessage)msg).getMessage(); options = options | SEND_OPTIONS_BYTE_MESSAGE; } else { b = XByteBuffer.serialize(msg); options = options & (~SEND_OPTIONS_BYTE_MESSAGE); } data.setOptions(options); //XByteBuffer buffer = new XByteBuffer(b.length+128,false); buffer = BufferPool.getBufferPool().getBuffer(b.length+128, false); buffer.append(b,0,b.length); data.setMessage(buffer); InterceptorPayload payload = null; if ( handler != null ) { payload = new InterceptorPayload(); payload.setErrorHandler(handler); } getFirstInterceptor().sendMessage(destination, data, payload); if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("GroupChannel - Sent msg:" + new UniqueId(data.getUniqueId()) + " at " + new java.sql.Timestamp(System.currentTimeMillis()) + " to " + Arrays.toNameString(destination)); Logs.MESSAGES.trace("GroupChannel - Send Message:" + new UniqueId(data.getUniqueId()) + " is " + msg); } return new UniqueId(data.getUniqueId()); } catch (RuntimeException | IOException e) { throw new ChannelException(e); } finally { if ( buffer != null ) BufferPool.getBufferPool().returnBuffer(buffer); } }
Example 5
Source File: TestEncryptInterceptor.java From Tomcat8-Source-Read with MIT License | 4 votes |
@Test public void testMultithreaded() throws Exception { String inputValue = "A test string to fight over."; final byte[] bytes = inputValue.getBytes("UTF-8"); int numThreads = 100; final int messagesPerThread = 10; dest.setPrevious(new ValuesCaptureInterceptor()); src.start(Channel.SND_TX_SEQ); dest.start(Channel.SND_TX_SEQ); Runnable job = new Runnable() { @Override public void run() { try { ChannelData msg = new ChannelData(false); XByteBuffer xbb = new XByteBuffer(1024, false); xbb.append(bytes, 0, bytes.length); msg.setMessage(xbb); for(int i=0; i<messagesPerThread; ++i) src.sendMessage(null, msg, null); } catch (ChannelException e) { Assert.fail("Encountered exception sending messages: " + e.getMessage()); } } }; Thread[] threads = new Thread[numThreads]; for(int i=0; i<numThreads; ++i) { threads[i] = new Thread(job); threads[i].setName("Message-Thread-" + i); } for(int i=0; i<numThreads; ++i) threads[i].start(); for(int i=0; i<numThreads; ++i) threads[i].join(); // Check all received messages to make sure they are not corrupted Collection<byte[]> messages = ((ValuesCaptureInterceptor)dest.getPrevious()).getValues(); Assert.assertEquals("Did not receive all expected messages", numThreads * messagesPerThread, messages.size()); for(byte[] message : messages) Assert.assertArrayEquals("Message is corrupted", message, bytes); }
Example 6
Source File: GroupChannel.java From Tomcat7.0.67 with Apache License 2.0 | 4 votes |
/** * * @param destination Member[] - destination.length > 0 * @param msg Serializable - the message to send * @param options int - sender options, options can trigger guarantee levels and different interceptors to * react to the message see class documentation for the <code>Channel</code> object.<br> * @param handler - callback object for error handling and completion notification, used when a message is * sent asynchronously using the <code>Channel.SEND_OPTIONS_ASYNCHRONOUS</code> flag enabled. * @return UniqueId - the unique Id that was assigned to this message * @throws ChannelException - if an error occurs processing the message * @see org.apache.catalina.tribes.Channel */ @Override public UniqueId send(Member[] destination, Serializable msg, int options, ErrorHandler handler) throws ChannelException { if ( msg == null ) throw new ChannelException("Cant send a NULL message"); XByteBuffer buffer = null; try { if ( destination == null || destination.length == 0) throw new ChannelException("No destination given"); ChannelData data = new ChannelData(true);//generates a unique Id data.setAddress(getLocalMember(false)); data.setTimestamp(System.currentTimeMillis()); byte[] b = null; if ( msg instanceof ByteMessage ){ b = ((ByteMessage)msg).getMessage(); options = options | SEND_OPTIONS_BYTE_MESSAGE; } else { b = XByteBuffer.serialize(msg); options = options & (~SEND_OPTIONS_BYTE_MESSAGE); } data.setOptions(options); //XByteBuffer buffer = new XByteBuffer(b.length+128,false); buffer = BufferPool.getBufferPool().getBuffer(b.length+128, false); buffer.append(b,0,b.length); data.setMessage(buffer); InterceptorPayload payload = null; if ( handler != null ) { payload = new InterceptorPayload(); payload.setErrorHandler(handler); } getFirstInterceptor().sendMessage(destination, data, payload); if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("GroupChannel - Sent msg:" + new UniqueId(data.getUniqueId()) + " at " +new java.sql.Timestamp(System.currentTimeMillis())+ " to "+Arrays.toNameString(destination)); Logs.MESSAGES.trace("GroupChannel - Send Message:" + new UniqueId(data.getUniqueId()) + " is " +msg); } return new UniqueId(data.getUniqueId()); }catch ( Exception x ) { if ( x instanceof ChannelException ) throw (ChannelException)x; throw new ChannelException(x); } finally { if ( buffer != null ) BufferPool.getBufferPool().returnBuffer(buffer); } }
Example 7
Source File: GroupChannel.java From tomcatsrc with Apache License 2.0 | 4 votes |
/** * * @param destination Member[] - destination.length > 0 * @param msg Serializable - the message to send * @param options int - sender options, options can trigger guarantee levels and different interceptors to * react to the message see class documentation for the <code>Channel</code> object.<br> * @param handler - callback object for error handling and completion notification, used when a message is * sent asynchronously using the <code>Channel.SEND_OPTIONS_ASYNCHRONOUS</code> flag enabled. * @return UniqueId - the unique Id that was assigned to this message * @throws ChannelException - if an error occurs processing the message * @see org.apache.catalina.tribes.Channel */ @Override public UniqueId send(Member[] destination, Serializable msg, int options, ErrorHandler handler) throws ChannelException { if ( msg == null ) throw new ChannelException("Cant send a NULL message"); XByteBuffer buffer = null; try { if ( destination == null || destination.length == 0) throw new ChannelException("No destination given"); ChannelData data = new ChannelData(true);//generates a unique Id data.setAddress(getLocalMember(false)); data.setTimestamp(System.currentTimeMillis()); byte[] b = null; if ( msg instanceof ByteMessage ){ b = ((ByteMessage)msg).getMessage(); options = options | SEND_OPTIONS_BYTE_MESSAGE; } else { b = XByteBuffer.serialize(msg); options = options & (~SEND_OPTIONS_BYTE_MESSAGE); } data.setOptions(options); //XByteBuffer buffer = new XByteBuffer(b.length+128,false); buffer = BufferPool.getBufferPool().getBuffer(b.length+128, false); buffer.append(b,0,b.length); data.setMessage(buffer); InterceptorPayload payload = null; if ( handler != null ) { payload = new InterceptorPayload(); payload.setErrorHandler(handler); } getFirstInterceptor().sendMessage(destination, data, payload); if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("GroupChannel - Sent msg:" + new UniqueId(data.getUniqueId()) + " at " +new java.sql.Timestamp(System.currentTimeMillis())+ " to "+Arrays.toNameString(destination)); Logs.MESSAGES.trace("GroupChannel - Send Message:" + new UniqueId(data.getUniqueId()) + " is " +msg); } return new UniqueId(data.getUniqueId()); }catch ( Exception x ) { if ( x instanceof ChannelException ) throw (ChannelException)x; throw new ChannelException(x); } finally { if ( buffer != null ) BufferPool.getBufferPool().returnBuffer(buffer); } }