Your certificates aren't set up correctly - the check-certificates.sh
script will confirm this.


On Fri, Jul 9, 2010 at 07:21, malachid <[email protected]> wrote:
> I have the server built (ant all).  Server appears to be running (I
> think... stack trace below).
> When I connect via the command-line client, it works and I can see
> logs output showing the connection.
> When I try to connect via the web interface, I get a 404 and no logs
> are output....
>
> Here's the stack:
>
> mala...@rplab1:/opt/wave-protocol$ ./run-server.sh
> Jul 8, 2010 2:18:43 PM
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl <init>
> INFO: Wave Server configured to host local domains: [rplab1]
> Jul 8, 2010 2:18:43 PM
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl <init>
> SEVERE: Failed to add our own signer info to the certificate store
> org.waveprotocol.wave.crypto.SignatureException: Certificate
> validation failure
>        at
> org.waveprotocol.wave.crypto.CachedCertPathValidator.validateNoCache(CachedCertPathValidator.java:
> 103)
>        at
> org.waveprotocol.wave.crypto.CachedCertPathValidator.validate(CachedCertPathValidator.java:
> 65)
>        at
> org.waveprotocol.wave.crypto.WaveSignatureVerifier.verifySignerInfo(WaveSignatureVerifier.java:
> 129)
>        at
> org.waveprotocol.wave.examples.fedone.waveserver.CertificateManagerImpl.storeSignerInfo(CertificateManagerImpl.java:
> 199)
>        at
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl.<init>(WaveServerImpl.java:
> 453)
>        at
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl$
> $FastClassByGuice$$8086ed04.newInstance(<generated>)
>        at
> com.google.inject.internal.cglib.reflect.FastConstructor.newInstance(FastConstructor.java:
> 40)
>        at com.google.inject.internal.DefaultConstructionProxyFactory
> $1.newInstance(DefaultConstructionProxyFactory.java:59)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 84)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:53)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:53)
>        at
> com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:
> 38)
>        at
> com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:
> 62)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 83)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:
> 38)
>        at
> com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:
> 62)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 83)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:53)
>        at
> com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:
> 38)
>        at
> com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:
> 62)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 83)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at com.google.inject.internal.InjectorImpl
> $4$1.call(InjectorImpl.java:825)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 871)
>        at com.google.inject.internal.InjectorImpl
> $4.get(InjectorImpl.java:821)
>        at
> com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:
> 860)
>        at
> org.waveprotocol.wave.examples.fedone.ServerMain.run(ServerMain.java:
> 57)
>        at
> org.waveprotocol.wave.examples.fedone.ServerMain.main(ServerMain.java:
> 46)
> Caused by: java.security.cert.CertPathValidatorException: subject/
> issuer name chaining check failed
>        at
> sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:
> 153)
>        at
> sun.security.provider.certpath.PKIXCertPathValidator.doValidate(PKIXCertPathValidator.java:
> 325)
>        at
> sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:
> 187)
>        at
> java.security.cert.CertPathValidator.validate(CertPathValidator.java:
> 267)
>        at
> org.waveprotocol.wave.crypto.CachedCertPathValidator.validateNoCache(CachedCertPathValidator.java:
> 101)
>        ... 55 more
> couldn't connect to XMPP server:org.xmpp.component.ComponentException:
> conflict
> Jul 8, 2010 2:18:43 PM
> org.waveprotocol.wave.examples.fedone.ServerMain run
> INFO: Starting server
> Jul 8, 2010 2:18:43 PM
> org.waveprotocol.wave.examples.fedone.ServerMain main
> SEVERE: IOException when running server: Address already in use
> mala...@rplab1:/opt/wave-protocol$ ./run-server.sh
> Jul 8, 2010 2:21:03 PM
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl <init>
> INFO: Wave Server configured to host local domains: [rplab1]
> Jul 8, 2010 2:21:03 PM
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl <init>
> SEVERE: Failed to add our own signer info to the certificate store
> org.waveprotocol.wave.crypto.SignatureException: Certificate
> validation failure
>        at
> org.waveprotocol.wave.crypto.CachedCertPathValidator.validateNoCache(CachedCertPathValidator.java:
> 103)
>        at
> org.waveprotocol.wave.crypto.CachedCertPathValidator.validate(CachedCertPathValidator.java:
> 65)
>        at
> org.waveprotocol.wave.crypto.WaveSignatureVerifier.verifySignerInfo(WaveSignatureVerifier.java:
> 129)
>        at
> org.waveprotocol.wave.examples.fedone.waveserver.CertificateManagerImpl.storeSignerInfo(CertificateManagerImpl.java:
> 199)
>        at
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl.<init>(WaveServerImpl.java:
> 453)
>        at
> org.waveprotocol.wave.examples.fedone.waveserver.WaveServerImpl$
> $FastClassByGuice$$8086ed04.newInstance(<generated>)
>        at
> com.google.inject.internal.cglib.reflect.FastConstructor.newInstance(FastConstructor.java:
> 40)
>        at com.google.inject.internal.DefaultConstructionProxyFactory
> $1.newInstance(DefaultConstructionProxyFactory.java:59)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 84)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:53)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:53)
>        at
> com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:
> 38)
>        at
> com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:
> 62)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 83)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:
> 38)
>        at
> com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:
> 62)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 83)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at
> com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:53)
>        at
> com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:
> 38)
>        at
> com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:
> 62)
>        at
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:
> 83)
>        at com.google.inject.internal.ConstructorBindingImpl
> $Factory.get(ConstructorBindingImpl.java:200)
>        at com.google.inject.internal.ProviderToInternalFactoryAdapter
> $1.call(ProviderToInternalFactoryAdapter.java:43)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 878)
>        at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:
> 40)
>        at com.google.inject.Scopes$1$1.get(Scopes.java:64)
>        at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:
> 40)
>        at com.google.inject.internal.InjectorImpl
> $4$1.call(InjectorImpl.java:825)
>        at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:
> 871)
>        at com.google.inject.internal.InjectorImpl
> $4.get(InjectorImpl.java:821)
>        at
> com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:
> 860)
>        at
> org.waveprotocol.wave.examples.fedone.ServerMain.run(ServerMain.java:
> 57)
>        at
> org.waveprotocol.wave.examples.fedone.ServerMain.main(ServerMain.java:
> 46)
> Caused by: java.security.cert.CertPathValidatorException: subject/
> issuer name chaining check failed
>        at
> sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:
> 153)
>        at
> sun.security.provider.certpath.PKIXCertPathValidator.doValidate(PKIXCertPathValidator.java:
> 325)
>        at
> sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:
> 187)
>        at
> java.security.cert.CertPathValidator.validate(CertPathValidator.java:
> 267)
>        at
> org.waveprotocol.wave.crypto.CachedCertPathValidator.validateNoCache(CachedCertPathValidator.java:
> 101)
>        ... 55 more
> Jul 8, 2010 2:21:03 PM
> org.waveprotocol.wave.federation.xmpp.ComponentPacketTransport
> initialize
> INFO: Initializing with JID: wave.rplab1.rplab1.enet.sharplabs.com
> Jul 8, 2010 2:21:03 PM
> org.waveprotocol.wave.federation.xmpp.ComponentPacketTransport start
> INFO: Connected to XMPP server with JID: wave.rplab1
> Jul 8, 2010 2:21:03 PM
> org.waveprotocol.wave.examples.fedone.ServerMain run
> INFO: Starting server
> 2010-07-08 14:21:03.561:DBUG::Logging to StdErrLog::DEBUG=true via
> org.eclipse.jetty.util.log.StdErrLog
> 2010-07-08 14:21:03.561:DBUG::Container
> org.eclipse.jetty.server.ser...@13f136e +
> selectchannelconnec...@rplab1:9898 as connector
> 2010-07-08 14:21:03.578:DBUG::Container
> org.eclipse.jetty.server.ser...@13f136e +
> servletcontexthand...@6b496d@6b496d/,file:/opt/wave-protocol/war/ as
> handler
> 2010-07-08 14:21:03.592:DBUG::filterNameMap={}
> 2010-07-08 14:21:03.592:DBUG::pathFilters=null
> 2010-07-08 14:21:03.593:DBUG::servletFilterMap=null
> 2010-07-08 14:21:03.593:DBUG::servletPathMap={/
> socket=org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658}
> 2010-07-08
> 14:21:03.593:DBUG::servletNameMap={org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658=org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658}
> 2010-07-08 14:21:03.598:DBUG::filterNameMap={}
> 2010-07-08 14:21:03.598:DBUG::pathFilters=null
> 2010-07-08 14:21:03.598:DBUG::servletFilterMap=null
> 2010-07-08 14:21:03.598:DBUG::servletPathMap={/
> socket=org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658, /
> *=org.eclipse.jetty.servlet.DefaultServlet-26670261}
> 2010-07-08
> 14:21:03.598:DBUG::servletNameMap={org.eclipse.jetty.servlet.DefaultServlet-26670261=org.eclipse.jetty.servlet.DefaultServlet-26670261,
> org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658=org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658}
> 2010-07-08 14:21:03.599:DBUG::Starting
> org.eclipse.jetty.server.ser...@13f136e
> 2010-07-08 14:21:03.599:INFO::jetty-0.3
> 2010-07-08 14:21:03.615:DBUG::Container
> org.eclipse.jetty.server.ser...@13f136e + qtp30167145{8<=0<=0/254,-1}
> as threadpool
> 2010-07-08 14:21:03.616:DBUG::Starting qtp30167145{8<=0<=0/254,-1}
> 2010-07-08 14:21:03.617:DBUG::STARTED qtp30167145{8<=7<=8/254,0}
> 2010-07-08 14:21:03.618:DBUG::Starting
> servletcontexthand...@6b496d@6b496d/,file:/opt/wave-protocol/war/
> 2010-07-08 14:21:03.626:DBUG::Container
> servletcontexthand...@6b496d@6b496d/,file:/opt/wave-protocol/war/ +
> servlethand...@17b4703@ as handler
> 2010-07-08 14:21:03.626:DBUG::Container servlethand...@17b4703@ +
> org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658 as servlet
> 2010-07-08 14:21:03.626:DBUG::Container servlethand...@17b4703@ +
> org.eclipse.jetty.servlet.DefaultServlet-26670261 as servlet
> 2010-07-08 14:21:03.626:DBUG::Container servlethand...@17b4703@ + [/
> socket]=>org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658 as servletMapping
> 2010-07-08 14:21:03.626:DBUG::Container servlethand...@17b4703@ + [/
> *]=>org.eclipse.jetty.servlet.DefaultServlet-26670261 as
> servletMapping
> 2010-07-08 14:21:03.626:DBUG::Starting servlethand...@17b4703@
> 2010-07-08 14:21:03.626:DBUG::filterNameMap={}
> 2010-07-08 14:21:03.626:DBUG::pathFilters=null
> 2010-07-08 14:21:03.626:DBUG::servletFilterMap=null
> 2010-07-08 14:21:03.626:DBUG::servletPathMap={/
> socket=org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658, /
> *=org.eclipse.jetty.servlet.DefaultServlet-26670261}
> 2010-07-08
> 14:21:03.626:DBUG::servletNameMap={org.eclipse.jetty.servlet.DefaultServlet-26670261=org.eclipse.jetty.servlet.DefaultServlet-26670261,
> org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658=org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658}
> 2010-07-08 14:21:03.626:DBUG::starting servlethand...@17b4703@
> 2010-07-08 14:21:03.627:DBUG::STARTED servlethand...@17b4703@
> 2010-07-08 14:21:03.627:DBUG::starting
> servletcontexthand...@6b496d@6b496d/,file:/opt/wave-protocol/war/
> 2010-07-08 14:21:03.627:DBUG::Starting
> org.eclipse.jetty.servlet.DefaultServlet-26670261
> 2010-07-08 14:21:03.628:DBUG::Starting
> org.eclipse.jetty.servlet.nioresourceca...@15db13f
> 2010-07-08 14:21:03.628:DBUG::STARTED
> org.eclipse.jetty.servlet.nioresourceca...@15db13f
> 2010-07-08 14:21:03.628:DBUG::resource base = null
> 2010-07-08 14:21:03.629:DBUG::STARTED
> org.eclipse.jetty.servlet.DefaultServlet-26670261
> 2010-07-08 14:21:03.629:DBUG::Starting
> org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658
> 2010-07-08 14:21:03.630:DBUG::STARTED
> org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658
> 2010-07-08 14:21:03.630:DBUG::STARTED
> servletcontexthand...@6b496d@6b496d/,file:/opt/wave-protocol/war/
> 2010-07-08 14:21:03.630:DBUG::starting
> org.eclipse.jetty.server.ser...@13f136e
> 2010-07-08 14:21:03.630:DBUG::Starting
> selectchannelconnec...@rplab1:9898
> 2010-07-08 14:21:03.630:DBUG::Starting
> org.eclipse.jetty.server.nio.selectchannelconnecto...@3afb99
> 2010-07-08 14:21:03.635:DBUG::STARTED
> org.eclipse.jetty.server.nio.selectchannelconnecto...@3afb99
> 2010-07-08 14:21:03.636:INFO::Started
> selectchannelconnec...@rplab1:9898
> 2010-07-08 14:21:03.636:DBUG::STARTED
> selectchannelconnec...@rplab1:9898
> org.eclipse.jetty.server.ser...@13f136e STOPPED
>  +-servletcontexthand...@6b496d@6b496d/,file:/opt/wave-protocol/war/
> started
>    +-servlethand...@17b4703 started
>       +-null
>       +-[/
> socket]=>org.waveprotocol.wave.examples.fedone.rpc.ServerRpcProvider
> $WaveWebSocketServlet-27660658
>       +-[/*]=>org.eclipse.jetty.servlet.DefaultServlet-26670261
>
> 2010-07-08 14:21:03.637:DBUG::STARTED
> org.eclipse.jetty.server.ser...@13f136e
>
>
>
> On May 26, 11:39 pm, "J.D. Zamfirescu" <[email protected]> wrote:
>> Hi group!
>>
>> We've just pushed a first working version of our Simple Web Client,
>> complete with our Rich Text Editor integrated and an updated FedOne
>> that speaks the draft client-server protocol. This code lives in the
>> branch "io2010", available 
>> here:http://code.google.com/p/wave-protocol/source/checkout?repo=io2010
>>
>> We wanted to get this code out to you as soon as possible, despite
>> some (very) rough edges. The code we've pushed is functional and
>> federates with wavesandbox.com, but there are a number of caveats.
>>
>> First, here is what we're releasing today:
>>
>> • The Wave Rich-Text Editor
>> • A client-side concurrency control module (aka "CC stack"), which
>> coordinates the communication of deltas between a Wave client and a
>> Wave server.
>> • A Simple Web Client that combines the Rich-Text Editor and CC stack
>> together with a simplistic "login" system and wave selection panel.
>> (If you're familiar with FedOne, think of this as the web version of
>> the FedOne console client, albeit with real-time editing.)
>> • An updated FedOne that serves the new client-server protocol and
>> hosts the simple web client.
>>
>> All this code requires GWT on the client, so we've added GWT to the
>> mercurial repository. Once you have run the new FedOne server, by
>> default the new web client will be available on port 9898. The web
>> client requires a browser that supports WebSocket - currently Chrome
>> and Webkit nightly builds.
>>
>> Next, the caveats:
>>
>> • The Simple Web Client uses the new conversation model but only
>> implements a very basic subset of its features: a single root thread
>> and its component blips.
>> • The client-server connection remains fragile - the CC stack supports
>> handling reconnecting when the underlying connection drops, but we
>> haven't yet hooked up this logic, and the FedOne server doesn't
>> support it well yet.
>> • The index wave (the equivalent of the "inbox" in FedOne) still uses
>> an older version of the Wave model.
>> • Tests are broken all over the place. This is unfortunate, but we're
>> aware of it, and are committed to fixing them. We just wanted to
>> release this code ASAP. Fixed tests to follow.
>> • The client-server protocol has been changed, but still isn't in it's
>> final form. We'll be making more changes to it in the near future.
>>
>> Once the above issues have been addressed, we'll be moving the code to
>> the main repository - for now, development will be in the open on the
>> io2010 branch. Stay tuned for fixes to these issues soon.
>>
>> Happy hacking!
>>
>> Anthony Baxter and J.D. Zamfirescu
>> Google Wave
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Wave Protocol" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/wave-protocol?hl=en.
>
>



-- 
Anthony Baxter, [email protected]

-- 
You received this message because you are subscribed to the Google Groups "Wave 
Protocol" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/wave-protocol?hl=en.

Reply via email to