How do I get Apache Ignite persistence to work? - persistence

I have the following configuration for my embedded Ignite (v2.3) service (it will be a cluster eventually, but embedded is easier for development):
val config = new IgniteConfiguration
val dsConfig = new DataStorageConfiguration
dsConfig.setStoragePath("ignitedb/storage")
dsConfig.setWalPath("ignitedb/wal")
dsConfig.setWalArchivePath("ignitedb/wal/archive")
dsConfig.getDefaultDataRegionConfiguration.setPersistenceEnabled(true)
config.setDataStorageConfiguration(dsConfig)
Ignition.setClientMode(false)
config.setConsistentId(java.net.InetAddress.getLocalHost.getHostName)
val ignite = Ignition.start(config)
ignite.active(true)
Various files are created in those directories:
ignitedb/
├── storage
│   └── imac_home
│   ├── cache-changes
│   │   ├── 1113bbb3-6183-4f97-8783-ca61c4afffb0
│   │   │   ├── cache_data.dat
│   │   │   └── index.bin
│   │   └── 605e79c8-63aa-49d5-86b2-68468e648375
│   │   ├── cache_data.dat
│   │   └── index.bin
│   ├── cache-ignite-sys-cache
│   ├── cache-pings
│   │   ├── 86d44085-3eca-4dfa-92fb-c2e7fd0f4f4b
│   │   │   ├── cache_data.dat
│   │   │   ├── index.bin
│   │   │   └── part-714.bin
│   │   └── f69da997-fae5-45a5-9abc-44639bb46e8e
│   │   ├── cache_data.dat
│   │   ├── index.bin
│   │   ├── part-142.bin
│   │   ├── part-152.bin
│   │   ├── <many more>
│   ├── cache-products
│   │   ├── 1113bbb3-6183-4f97-8783-ca61c4afffb0
│   │   │   ├── cache_data.dat
│   │   │   ├── index.bin
│   │   │   ├── part-49.bin
│   │   │   ├── part-50.bin
│   │   │   ├── <many more>
│   │   └── 605e79c8-63aa-49d5-86b2-68468e648375
│   │   ├── cache_data.dat
│   │   ├── index.bin
│   │   └── part-49.bin
│   ├── cacheGroup-default-ds-group
│   │   ├── ignite-sys-atomic-cache#default-ds-groupcache_data.dat
│   │   ├── index.bin
│   │   ├── part-264.bin
│   │   └── part-791.bin
│   ├── cp
│   │   ├── 1512524465868-cecd4b2e-5c0f-4b25-8ede-92336ba2aac3-END.bin
│   │   ├── 1512524465868-cecd4b2e-5c0f-4b25-8ede-92336ba2aac3-START.bin
│   │   ├── 1512524645873-70f73379-5e49-4779-849c-e1dda08e2f84-END.bin
│   │   ├── 1512524645873-70f73379-5e49-4779-849c-e1dda08e2f84-START.bin
│   │   ├── <many more>
│   └── lock
└── wal
├── archive
│   └── imac_home
└── imac_home
├── 0000000000000000.wal
├── 0000000000000001.wal
├── <many more>
However, when I stop and restart my application, all my caches have disappeared. How do I actually persist them to disk? Do I need to do something per-cache as well as enabling persistence globally? (The docs don't mention anything like that.)
I'm getting this exception at startup, which on closer inspection looks like it's coming from the persistence layer:
09:44:33.034 INFO o.a.i.i.p.c.p.f.FilePageStoreManager - Resolved page store work directory: /Users/dan/projects/livefeeds/ignitedb/storage/imac_home
09:44:33.034 INFO o.a.i.i.p.c.p.w.FileWriteAheadLogManager - Resolved write ahead log work directory: /Users/dan/projects/livefeeds/ignitedb/wal/imac_home
09:44:33.034 INFO o.a.i.i.p.c.p.w.FileWriteAheadLogManager - Resolved write ahead log archive directory: /Users/dan/projects/livefeeds/ignitedb/wal/archive/imac_home
09:44:33.044 INFO o.a.i.i.p.c.p.w.FileWriteAheadLogManager - Started write-ahead log manager [mode=DEFAULT]
Can't load log handler "org.apache.ignite.logger.java.JavaLoggerFileHandler"
java.lang.ClassNotFoundException: org.apache.ignite.logger.java.JavaLoggerFileHandler
java.lang.ClassNotFoundException: org.apache.ignite.logger.java.JavaLoggerFileHandler
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.util.logging.LogManager$5.run(LogManager.java:965)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.logging.LogManager.loadLoggerHandlers(LogManager.java:958)
at java.util.logging.LogManager.initializeGlobalHandlers(LogManager.java:1578)
at java.util.logging.LogManager.access$1500(LogManager.java:145)
at java.util.logging.LogManager$RootLogger.accessCheckedHandlers(LogManager.java:1667)
at java.util.logging.Logger.getHandlers(Logger.java:1776)
at org.apache.ignite.logger.java.JavaLogger.findHandler(JavaLogger.java:399)
at org.apache.ignite.logger.java.JavaLogger.configure(JavaLogger.java:229)
at org.apache.ignite.logger.java.JavaLogger.<init>(JavaLogger.java:170)
at org.apache.ignite.logger.java.JavaLogger.<init>(JavaLogger.java:126)
at org.apache.ignite.IgniteJdbcDriver.<clinit>(IgniteJdbcDriver.java:410)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:323)
at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:407)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:409)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at java.sql.DriverManager$2.run(DriverManager.java:603)
at java.sql.DriverManager$2.run(DriverManager.java:583)
at java.security.AccessController.doPrivileged(Native Method)
at java.sql.DriverManager.loadInitialDrivers(DriverManager.java:583)
at java.sql.DriverManager.<clinit>(DriverManager.java:101)
at org.h2.Driver.load(Driver.java:155)
at org.h2.Driver.<clinit>(Driver.java:41)
at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.start(IgniteH2Indexing.java:2027)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.start(GridQueryProcessor.java:240)
at org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1870)
at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:955)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1909)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1652)
at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1080)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:600)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:525)
at org.apache.ignite.Ignition.start(Ignition.java:322)
at io.livefeeds.api.Main$.startIgnite(Main.scala:78)
at io.livefeeds.api.Main$.main(Main.scala:25)
at io.livefeeds.api.Main.main(Main.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sbt.Run.invokeMain(Run.scala:67)
at sbt.Run.run0(Run.scala:61)
at sbt.Run.sbt$Run$$execute$1(Run.scala:51)
at sbt.Run$$anonfun$run$1.apply$mcV$sp(Run.scala:55)
at sbt.Run$$anonfun$run$1.apply(Run.scala:55)
at sbt.Run$$anonfun$run$1.apply(Run.scala:55)
at sbt.Logger$$anon$4.apply(Logger.scala:84)
at sbt.TrapExit$App.run(TrapExit.scala:248)
at java.lang.Thread.run(Thread.java:745)
The rest of the log output for persistence is:
09:44:34.682 INFO o.a.i.i.p.c.p.f.FilePageStoreManager - Resolved page store work directory: /Users/dan/projects/livefeeds/ignitedb/storage/imac_home
09:44:34.682 INFO o.a.i.i.p.c.p.w.FileWriteAheadLogManager - Resolved write ahead log work directory: /Users/dan/projects/livefeeds/ignitedb/wal/imac_home
09:44:34.682 INFO o.a.i.i.p.c.p.w.FileWriteAheadLogManager - Resolved write ahead log archive directory: /Users/dan/projects/livefeeds/ignitedb/wal/archive/imac_home
09:44:34.682 INFO o.a.i.i.p.c.p.w.FileWriteAheadLogManager - Started write-ahead log manager [mode=DEFAULT]
09:44:34.747 INFO o.a.i.i.p.c.p.p.PageMemoryImpl - Started page memory [memoryAllocated=6.4 GiB, pages=1634272, tableSize=94.9 MiB, checkpointBuffer=1.6 GiB]
09:44:34.785 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Read checkpoint status [startMarker=/Users/dan/projects/livefeeds/ignitedb/storage/imac_home/cp/1512571436282-f25aee22-0e9e-4737-a0ad-aebc3c5a4bd6-START.bin, endMarker=/Users/dan/projects/livefeeds/ignitedb/storage/imac_home/cp/1512571307494-690bb0bf-e75e-4877-a3e5-ba7b43b190bd-END.bin]
09:44:34.786 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Checking memory state [lastValidPos=FileWALPointer [idx=0, fileOffset=8996738, len=20281, forceFlush=false], lastMarked=FileWALPointer [idx=0, fileOffset=9076734, len=20281, forceFlush=false], lastCheckpointId=f25aee22-0e9e-4737-a0ad-aebc3c5a4bd6]
09:44:34.786 WARN o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Ignite node stopped in the middle of checkpoint. Will restore memory state and finish checkpoint on node start.
[09:44:34] Ignite node stopped in the middle of checkpoint. Will restore memory state and finish checkpoint on node start.
09:44:34.846 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Found last checkpoint marker [cpId=f25aee22-0e9e-4737-a0ad-aebc3c5a4bd6, pos=FileWALPointer [idx=0, fileOffset=9076734, len=20281, forceFlush=false]]
09:44:34.853 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Finished applying memory changes [changesApplied=8, time=65ms]
09:44:34.857 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Checkpoint finished [cpId=f25aee22-0e9e-4737-a0ad-aebc3c5a4bd6, pages=6, markPos=FileWALPointer [idx=0, fileOffset=9076734, len=20281, forceFlush=false], pagesWrite=-3ms, fsync=0ms, total=-3ms]
09:44:34.861 INFO o.a.i.i.p.c.p.w.FileWriteAheadLogManager - Resuming logging to WAL segment [file=/Users/dan/projects/livefeeds/ignitedb/wal/imac_home/0000000000000000.wal, offset=9097015, ver=1]
09:44:35.065 INFO o.a.i.i.p.cache.GridCacheProcessor - Started cache [name=ignite-sys-cache, memoryPolicyName=sysMemPlc, mode=REPLICATED, atomicity=TRANSACTIONAL]
09:44:35.085 INFO o.a.i.i.p.cache.GridCacheProcessor - Started cache [name=ignite-sys-atomic-cache#default-ds-group, group=default-ds-group, memoryPolicyName=default, mode=PARTITIONED, atomicity=TRANSACTIONAL]
09:44:35.087 INFO o.a.i.i.p.c.d.d.p.GridDhtPartitionsExchangeFuture - Successfully activated caches [nodeId=f616a68d-e171-4384-8dc4-45c2e6788afc, client=false, topVer=AffinityTopologyVersion [topVer=1, minorTopVer=1]]
09:44:35.091 INFO o.a.i.i.p.c.d.d.p.GridDhtPartitionsExchangeFuture - Finished waiting for partition release future [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=1], waitTime=0ms, futInfo=NA]
09:44:35.139 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Read checkpoint status [startMarker=/Users/dan/projects/livefeeds/ignitedb/storage/imac_home/cp/1512571436282-f25aee22-0e9e-4737-a0ad-aebc3c5a4bd6-START.bin, endMarker=/Users/dan/projects/livefeeds/ignitedb/storage/imac_home/cp/1512571436282-f25aee22-0e9e-4737-a0ad-aebc3c5a4bd6-END.bin]
09:44:35.140 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Applying lost cache updates since last checkpoint record [lastMarked=FileWALPointer [idx=0, fileOffset=9076734, len=20281, forceFlush=false], lastCheckpointId=f25aee22-0e9e-4737-a0ad-aebc3c5a4bd6]
09:44:35.187 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Finished applying WAL changes [updatesApplied=0, time=51ms]
09:44:35.189 INFO o.a.i.i.p.c.p.GridCacheDatabaseSharedManager - Finished indexes rebuilding for cache: [name=ignite-sys-cache, grpName=null

The problem was that the / in my cache names were causing the persistence layer to create extra directories, because they're not escaped at all. I switched to using #, and it seems fine now.

Related

visual studio code java folder structure [duplicate]

I don't know if there's a name for this kind of behavior.
I've seen it in IntelliJ, where single-folder folders are unified or flattened in the project tree pane, where instead of:
.
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │   └── somepkg
│   │   │   └── coreapi
│   │   │   ├── controllers
│   │   │   │   ├── AssetMutations.java
│   │   │   │   ├── HomeController.java
│   │   │   │   └── SessionsQuery.java
│   │   │   ├── CoreApiApplication.java
You see:
.
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com.somepkg.coreapi
│   │   │   ├── controllers
│   │   │   │   ├── AssetMutations.java
│   │   │   │   ├── HomeController.java
│   │   │   │   └── SessionsQuery.java
│   │   │   ├── CoreApiApplication.java
Is there a way to make vs code tree-view file explorer to show subfolders this way?
It looks like it is in the iteration plan for June, 2019.
See Iteration plan for June, 2019: release in July, 2019 and issue: merging single child directories.
Update: making it into v1.41 to be released in December, 2019. See https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_41.md#compact-folders-in-explorer
Compact folders in Explorer
In the File Explorer, we now render single child folders in a compact
form. In such a form, single child folders will be compressed in a
combined tree element. Useful for Java package structures, for
example.
Setting explorer.compactFolders controls this behavior. By default,
this setting is turned on.
So "explorer.compactFolders": false, will disable the feature.

Game_ cannot be resolved to a variable in arquillian persistance example

I was asking on #arquillian Freenode IRC channel about question
Arquillian JPA tutorial: Could not create new instance of class org.jboss.arquillian.test.impl.EventTestRunnerAdaptor
when a user told me that he successfully runned
https://github.com/arquillian/arquillian-examples/tree/master/arquillian-persistence-tutorial
so I did
git clone https://github.com/arquillian/arquillian-examples.git
then in Eclipse, I clicked File->Import->Existing Maven Projects and selecte the subdirectory
arquillian-examples/arquillian-persistence-tutorial
Once Eclipse finished importing the project, I obtain in file
/src/test/java/org/arquillian/example/GamePersistenceTest.java
line 146, the error message
Game_ cannot be resolved to a variable
What can I do? In my attempt at the link at beginning of the page, this did not happpen.
I did not change any file downloaded from git repo.
Folder tree
.
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── org
│   │   │   └── arquillian
│   │   │   └── example
│   │   │   └── Game.java
│   │   └── resources
│   │   └── META-INF
│   │   └── persistence.xml
│   └── test
│   ├── java
│   │   └── org
│   │   └── arquillian
│   │   └── example
│   │   └── GamePersistenceTest.java
│   ├── resources
│   │   ├── arquillian.launch
│   │   ├── arquillian.xml
│   │   └── jbossas-ds.xml
│   ├── resources-glassfish-embedded
│   │   ├── glassfish-resources.xml
│   │   ├── logging.properties
│   │   └── test-persistence.xml
│   ├── resources-glassfish-remote
│   │   └── test-persistence.xml
│   └── resources-jbossas-managed
│   └── test-persistence.xml
└── target
├── classes
│   ├── META-INF
│   │   ├── MANIFEST.MF
│   │   ├── maven
│   │   │   └── org.arquillian.example
│   │   │   └── arquillian-persistence-tutorial
│   │   │   ├── pom.properties
│   │   │   └── pom.xml
│   │   └── persistence.xml
│   └── org
│   └── arquillian
│   └── example
│   └── Game.class
└── test-classes
├── arquillian.launch
├── arquillian.xml
├── glassfish-resources.xml
├── jbossas-ds.xml
├── logging.properties
├── org
│   └── arquillian
│   └── example
│   └── GamePersistenceTest.class
└── test-persistence.xml
30 directories, 24 files
The _Game class in that example is generated by the Hibernate JPA 2 metamodel generator (hibernate-jpamodelgen) that is defined as a dependency in the project POM. You'll now need to generate the metamodel by employing one the options outlined in the metamodel generator reference guide.
You could use Eclipse itself by configuring the annotation processing phase. Or you could modify the POM to use the maven-compiler-plugin configuration specified in the guide, to run as part of your build.

Which folders are unnecessary while deploying a play! app?

I have finally made a production worthy app with play, and use the play war -o foo command to create an exploded war. However, its size goes on to 30 MB and there are a lot of folders included. I develop in eclipse, so there are some eclipse folders too. Below is a list of the folders I have. Can anyone help me out with the unnecessary folders? I have zeroed in on the app, conf, public and lib folders. Is my assumption correct?
├── app
│   ├── controllers
│   ├── jobs
│   │   ├── daily
│   │   └── monthly
│   ├── models
│   │   ├── encrypt
│   │   ├── file
│   │   ├── login
│   │   └── mail
│   ├── playground
│   └── views
│   ├── Application
│   └── errors
├── conf
├── eclipse
│   └── classes
│   ├── controllers
│   ├── jobs
│   │   ├── daily
│   │   └── monthly
│   ├── models
│   │   ├── encrypt
│   │   ├── file
│   │   ├── login
│   │   └── mail
│   └── playground
├── lib
├── logs
├── public
│   ├── bootstrap
│   │   ├── css
│   │   ├── img
│   │   ├── js
│   │   │   └── tests
│   │   │   ├── unit
│   │   │   └── vendor
│   │   └── less
│   ├── images
│   ├── javascripts
│   └── stylesheets
├── test
└── tmp
├── bytecode
│   └── DEV
└── classes
├── controllers
├── helpers
├── jobs
│   ├── daily
│   └── monthly
├── models
│   ├── encrypt
│   ├── file
│   ├── login
│   └── mail
└── playground
You need to delete your tmp folder as well, try to use play clean on your project.
All folders in app, conf, lib and public should be kept in your war. Maybe should add precompiled

spring-security-facebook, s2-init-facebook not generating the Default Dao

I have installed spring-security-facebook to a test grail application. This was done after installing spring-security-core and running s2-quickstart.
I am just a novice and was trying to integrate the facebook login button into my test app. But, the problem is that when I run s2-init-facebook the plugin is not generating the default Dao as it was told in the documentation in http://grails.org/plugin/spring-security-facebook
Use your own authentication dao
Plugin generates an Dao, after calling s2-init-facebook#, and put it
into your #conf/spring/resources.groovy and #Config.groovy#. Actually
it's an 'dumb' dao implementations, you have to rewrite it to follow
your data structures:
The shortened tree output of my app directory is given below:
.
├── application.properties
├── grails-app
│   ├── conf
│   │   ├── ApplicationResources.groovy
│   │   ├── BootStrap.groovy
│   │   ├── BuildConfig.groovy
│   │   ├── Config.groovy
│   │   ├── DataSource.groovy
│   │   ├── hibernate
│   │   ├── spring
│   │   │   └── resources.groovy
│   │   └── UrlMappings.groovy
│   ├── controllers
│   │   ├── LoginController.groovy
│   │   └── LogoutController.groovy
│   ├── domain
│   │   └── com
│   │   └── fbtest
│   │   └── webapp
│   │   └── auth
│   │   ├── FacebookUser.groovy
│   │   ├── SecRole.groovy
│   │   ├── SecUser.groovy
│   │   └── SecUserSecRole.groovy
│   ├── i18n
│   │   ├── ...
│   ├── services
│   ├── taglib
│   ├── utils
│   └── views
│   ├── error.gsp
│   ├── index.gsp
│   ├── layouts
│   │   └── main.gsp
│   └── login
│   ├── auth.gsp
│   └── denied.gsp
├── lib
├── scripts
├── src
│   ├── groovy
│   └── java
├── test
│   ├── integration
│   └── unit
└── web-app
├── ...
resource.groovy file is also empty.
// Place your Spring DSL code here
beans = {
}
Please, help me in understanding if I am doing any thing wrong.
I am using Grails version: 2.0.4 and spring-security-facebook's version is 0.8.
Thanks in advance.
Oh, it should be removed from documentation. For last versions it's not necessary to have own DAO, now it have default very flexible dao. And now it's not generated during install. Try to run your app, it should works, if everything is configured correctly.
You can still use own DAO, if you have implemented it by yourself. But for versions since 0.7 nearly everything can be extending with optional FacebookAuthService, that you can implement if you wish (it's described in documentation as well).

Lift: Comet component not found / Class not found

For my first steps into Lift I just started with this tutorial but it won't work for me. Instead of the simple chat app I only get these two exceptions:
Error processing snippet: comet
Reason: Comet Component not found
and
Error processing snippet: ChatIn
Reason: Class Not Found
Here is the directory structure of my compiled webapp:
target/chat-1.0-SNAPSHOT/
├── index.html
├── META-INF
└── WEB-INF
├── classes
│   └── code
│   ├── comet
│   │   ├── Chat$$anonfun$lowPriority$1.class
│   │   ├── Chat.class
│   │   ├── ChatServer$$anonfun$lowPriority$1.class
│   │   ├── ChatServer.class
│   │   └── ChatServer$.class
│   └── snippet
│   ├── ChatIn$$anonfun$render$1.class
│   ├── ChatIn.class
│   └── ChatIn$.class
├── lib
│   ├── activation-1.1.jar
│   ├── commons-codec-1.4.jar
│   ├── commons-fileupload-1.2.2.jar
│   ├── derby-10.7.1.1.jar
│   ├── h2-1.2.147.jar
│   ├── htmlparser-1.2.1.jar
│   ├── joda-time-1.6.2.jar
│   ├── lift-actor_2.9.0-2.4-M3.jar
│   ├── lift-common_2.9.0-2.4-M3.jar
│   ├── lift-db_2.9.0-2.4-M3.jar
│   ├── lift-json_2.9.0-2.4-M3.jar
│   ├── lift-mapper_2.9.0-2.4-M3.jar
│   ├── lift-proto_2.9.0-2.4-M3.jar
│   ├── lift-util_2.9.0-2.4-M3.jar
│   ├── lift-webkit_2.9.0-2.4-M3.jar
│   ├── mail-1.4.4.jar
│   ├── paranamer-2.3.jar
│   ├── scala-compiler-2.9.0.jar
│   ├── scala-library-2.9.0.jar
│   ├── scalap-2.9.0.jar
│   └── slf4j-api-1.6.1.jar
└── web.xml
But as you can see, there are the compiled .class files for Chat, ChatServer and ChatIn, so what's wrong?
Please bring this question to the Lift Google group: https://groups.google.com/forum/#!forum/liftweb
It's likely that your Boot.scala doesn't contain the correct information, but without the source, it's tough to figure out the issue.