Yah, port scanning sends bytes that the wire format codec does not recognize. upgrading to a new version will not fix this.
On Mon, Apr 29, 2013 at 12:24 AM, mmg <manjusha.g...@gmail.com> wrote: > We dont use udp protocol. Also all the clients are at same version (4.0.1) > > We have found that this exception is thrown only when Qualys vulnerability > tool is executed. It seems this tool blocks the 61616 port for few secs for > scanning. during this time, we can see IOExceptions and SocektExceptions in > ActiveMQ log. Once the scan is finished, when our application tries to > create a consumer thread, this exception is reported on the console log. We > can a last message as "TCP consumer thread starting" in ActiveMQ logs. So > it seems our application is able to acquire connection and start a consumer > , but then it fails to receive any data on that connection. > > Have you ever observed such behavior? Will upgrading to new version take > care of this? > > Thanks, > -Manjusha > > --------------------------------------------------------------------- > > Here are log messages from ActiveMQ logs: > > > 2013-04-25 10:27:52,316 [0.80.0.32:57943] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:27:52,316 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:28:37,316 [0.80.0.32:57943] DEBUG Transport > - Transport failed: java.io.EOFException > java.io.EOFException > at java.io.DataInputStream.readInt(Unknown Source) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:28:37,316 [Duration=600000] DEBUG Transport > - Transport failed: java.io.IOException: The transport > tcp:///10.80.0.32:57943 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > java.io.IOException: The transport tcp:///10.80.0.32:57943 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > at > > org.apache.activemq.transport.TransportSupport.checkStarted(TransportSupport.java:108) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:123) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:78) > at > > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:77) > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44) > at > > org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60) > at > > org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211) > at > > org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:588) > at > > org.apache.activemq.broker.AbstractConnection.start(AbstractConnection.java:140) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:77) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:28:37,317 [Duration=600000] WARN ManagedTransportConnection > - Failed to unregister mbean: > > org.apache.activemq:BrokerName=bo-pbx00-iq011-broker,Type=Connection,ConnectorName=default,Connection=7113 > 2013-04-25 10:28:37,317 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:28:37,317 [0.80.0.32:57944] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:28:37,318 [Duration=600000] DEBUG Transport > - Transport failed: java.io.IOException: The transport > tcp:///10.80.0.32:57944 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > java.io.IOException: The transport tcp:///10.80.0.32:57944 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > at > > org.apache.activemq.transport.TransportSupport.checkStarted(TransportSupport.java:108) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:123) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:78) > at > > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:77) > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44) > at > > org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60) > at > > org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211) > at > > org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:588) > at > > org.apache.activemq.broker.AbstractConnection.start(AbstractConnection.java:140) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:77) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:28:37,318 [0.80.0.32:57944] DEBUG Transport > - Transport failed: java.io.EOFException > java.io.EOFException > at java.io.DataInputStream.readInt(Unknown Source) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:28:37,318 [0.80.0.32:57944] WARN ManagedTransportConnection > - Failed to unregister mbean: > > org.apache.activemq:BrokerName=bo-pbx00-iq011-broker,Type=Connection,ConnectorName=default,Connection=7114 > 2013-04-25 10:28:37,318 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:28:37,318 [0.80.0.32:57946] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:28:40,527 [0.80.0.32:57946] DEBUG Transport > - Transport failed: java.net.SocketException: Connection reset > java.net.SocketException: Connection reset > at java.net.SocketInputStream.read(Unknown Source) > at > > org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:48) > at > > org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:55) > at java.io.DataInputStream.readInt(Unknown Source) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:28:40,528 [Duration=600000] DEBUG Transport > - Transport failed: java.io.IOException: The transport > tcp:///10.80.0.32:57946 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > java.io.IOException: The transport tcp:///10.80.0.32:57946 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > at > > org.apache.activemq.transport.TransportSupport.checkStarted(TransportSupport.java:108) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:123) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:78) > at > > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:77) > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44) > at > > org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60) > at > > org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211) > at > > org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:588) > at > > org.apache.activemq.broker.AbstractConnection.start(AbstractConnection.java:140) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:77) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:28:40,537 [Duration=600000] WARN ManagedTransportConnection > - Failed to unregister mbean: > > org.apache.activemq:BrokerName=bo-pbx00-iq011-broker,Type=Connection,ConnectorName=default,Connection=7115 > 2013-04-25 10:28:40,538 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:28:40,538 [0.80.0.32:57955] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:29:23,551 [0.80.0.32:57955] DEBUG Transport > - Transport failed: java.io.EOFException > java.io.EOFException > at java.io.DataInputStream.readInt(Unknown Source) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,551 [Duration=600000] DEBUG Transport > - Transport failed: java.io.IOException: The transport > tcp:///10.80.0.32:57955 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > java.io.IOException: The transport tcp:///10.80.0.32:57955 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > at > > org.apache.activemq.transport.TransportSupport.checkStarted(TransportSupport.java:108) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:123) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:78) > at > > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:77) > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44) > at > > org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60) > at > > org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211) > at > > org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:588) > at > > org.apache.activemq.broker.AbstractConnection.start(AbstractConnection.java:140) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:77) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,552 [Duration=600000] WARN ManagedTransportConnection > - Failed to unregister mbean: > > org.apache.activemq:BrokerName=bo-pbx00-iq011-broker,Type=Connection,ConnectorName=default,Connection=7116 > 2013-04-25 10:29:23,552 [0.80.0.32:57956] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:29:23,552 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:29:23,553 [0.80.0.32:57956] DEBUG Transport > - Transport failed: java.io.EOFException > java.io.EOFException > at java.io.DataInputStream.readInt(Unknown Source) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,553 [Duration=600000] DEBUG Transport > - Transport failed: java.io.IOException: The transport > tcp:///10.80.0.32:57956 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > java.io.IOException: The transport tcp:///10.80.0.32:57956 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > at > > org.apache.activemq.transport.TransportSupport.checkStarted(TransportSupport.java:108) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:123) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:78) > at > > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:77) > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44) > at > > org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60) > at > > org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211) > at > > org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:588) > at > > org.apache.activemq.broker.AbstractConnection.start(AbstractConnection.java:140) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:77) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,553 [Duration=600000] WARN ManagedTransportConnection > - Failed to unregister mbean: > > org.apache.activemq:BrokerName=bo-pbx00-iq011-broker,Type=Connection,ConnectorName=default,Connection=7117 > 2013-04-25 10:29:23,554 [0.80.0.32:57957] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:29:23,554 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:29:23,554 [0.80.0.32:57957] DEBUG Transport > - Transport failed: java.io.EOFException > java.io.EOFException > at java.io.DataInputStream.readInt(Unknown Source) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,554 [Duration=600000] ERROR TransportConnector > - Could not accept connection: java.net.SocketException: Socket closed > java.net.SocketException: Socket closed > at java.net.SocketOutputStream.socketWrite(Unknown Source) > at java.net.SocketOutputStream.write(Unknown Source) > at > > org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:108) > at java.io.DataOutputStream.flush(Unknown Source) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:125) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.WireFormatNegotiator.sendWireFormat(WireFormatNegotiator.java:128) > at > > org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:64) > at > > org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:52) > at > > org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:52) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:75) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,555 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:29:23,555 [0.80.0.32:57958] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:29:23,555 [0.80.0.32:57958] DEBUG Transport > - Transport failed: java.io.IOException: Unknown data type: 69 > java.io.IOException: Unknown data type: 69 > at > > org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:345) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:276) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,555 [Duration=600000] DEBUG Transport > - Transport failed: java.io.IOException: The transport > tcp:///10.80.0.32:57958 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > java.io.IOException: The transport tcp:///10.80.0.32:57958 of type: > org.apache.activemq.transport.tcp.TcpTransport is not running. > at > > org.apache.activemq.transport.TransportSupport.checkStarted(TransportSupport.java:108) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:123) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:78) > at > > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:77) > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44) > at > > org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60) > at > > org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211) > at > > org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:588) > at > > org.apache.activemq.broker.AbstractConnection.start(AbstractConnection.java:140) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:77) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,555 [Duration=600000] WARN ManagedTransportConnection > - Failed to unregister mbean: > > org.apache.activemq:BrokerName=bo-pbx00-iq011-broker,Type=Connection,ConnectorName=default,Connection=7119 > 2013-04-25 10:29:23,556 [0.80.0.32:57959] DEBUG TcpTransport > - TCP consumer thread starting > 2013-04-25 10:29:23,556 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:29:23,556 [0.80.0.32:57959] DEBUG Transport > - Transport failed: java.io.EOFException > java.io.EOFException > at java.io.DataInputStream.readInt(Unknown Source) > at > > org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:274) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:142) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,556 [Duration=600000] ERROR TransportConnector > - Could not accept connection: java.net.SocketException: Socket closed > java.net.SocketException: Socket closed > at java.net.SocketOutputStream.socketWrite(Unknown Source) > at java.net.SocketOutputStream.write(Unknown Source) > at > > org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:108) > at java.io.DataOutputStream.flush(Unknown Source) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:125) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:141) > at > > org.apache.activemq.transport.WireFormatNegotiator.sendWireFormat(WireFormatNegotiator.java:128) > at > > org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:64) > at > > org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:52) > at > > org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:52) > at > > org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:75) > at > > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:136) > at > > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:137) > at java.lang.Thread.run(Unknown Source) > 2013-04-25 10:29:23,556 [Duration=600000] DEBUG WireFormatNegotiator > - Sending: WireFormatInfo { version=1, > properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true, > SizePrefixDisabled=false, StackTraceEnabled=true, > MaxInactivityDuration=600000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} > 2013-04-25 10:29:23,557 [0.80.0.32:57960] DEBUG TcpTransport > - TCP consumer thread starting > > > > > -- > View this message in context: > http://activemq.2283324.n4.nabble.com/Exception-in-thread-ActiveMQ-Transport-tcp-10-80-0-35-38499-java-lang-ClassCastException-org-apache-d-tp4665770p4666375.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > -- *Christian Posta* http://www.christianposta.com/blog twitter: @christianposta