Section | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
There is a long discussion of the dangers of deleting messages on the mailing list. On which J2EE containers has ESME been tested?
How does search work in ESME?
ESME uses Compassto perform full-text searches. Selecting different usage patterns There are different ways to use compass in ESME. The selection of which approach to use depends on what your requirements are. To select the option that you wish to use, you must set this option in your property file. To set the option, please use the following syntax:
Currently, there are three examples of different compass based options in the /server/src/main/resources/props/ folder.
How do you configure OpenID?
Using a proxy with openIDOpenID Often you may wish to install ESME behind the firewall. In most cases, you won't have an internal OpenId provider, which means that your users are going to use OpenIds from external providers. Usually, you will have to go through an internal proxy. If this is the case, then you must set the proxy server. To do this use the property file, This file must include the following lines:
Does ESME support LDAP integration?
Currently, ESME doesn't support LDAP usage. We are looking at a new LDAP component for liftas the basis for our implementation. Does ESME work with JDK 1.5?
Currently, there are some issues dealing with JDK 1.5. Many of these issues are related to restrictions associated with Scala itself. How do you start jetty with a different port when using maven?
mvn jetty:run -Djetty.port=8081 How do you run ESME in production-mode?
Start the container with the following environment variable (from lift list) -Drun.mode=production How do you run ESME with CURL?
Step-0: Generate Token:_Login to ESME via WebGui and used the Tokens menu at the top to create a new token. _Step-1:Construct the curl command:_Here is my example-_curl -X POST -v -u [your user id]:[your token from step-0] -d status="my curl message on feb 24"http://localhost:8080/esme/twitter/statuses/update.xml My ESME has 'esme' context running in Jetty. I didn't make any config change and is the default deployment. My WebGUI login is,http://localhost:8080/esme/ Step-2: Execute curl command: Run multiple times curl to see the updates in WebGui. I used Firefox. Design-relatedHow does Twitter's new streaming API differ from ESME's design?
Twitter now has another take on a message-streaming API over HTTP, using what looks like a non-HTTP-1.1-compliant form of request pipelining (sending multiple responses over a single open connection). See the documentation at http://apiwiki.twitter.com/Streaming-API-Documentation The advantage of their mechanism is that it's a smoother experience. What we've done with chunking/long polling is to simulate a stream of data on top of a non-streaming protocol. What Twitter has done is to say "this is a one-way conversation, we've got an open TCP/IP connection, so let's use it." Implementing what they have would require going below the current set of abstractions that Lift provides above the Servlets. At the basic philosophical level, Twitter's implementation is purer. It treats a stream of information as a stream of information. A significant disadvantage of Twitter's design is the requirement of only one streaming connection per account. As much as I dislike the approach of using session cookies to uniquely identify API message Question: In an enterprise context it could be an requirement to send a link to someone else pointing to a specific potentially old message in a certain Pool.
Yes. That's perfectly reasonable. That message is like a static file on disk. Once it's written, it remains unchanged until it's deleted. This is an ideal application of a REST-style approach. That's why I've advocated Question: Would it be costly in your model to get the message nr. X (+ n older messages) in a users timeline?
A message will exist outside of a timeline. There exists a cache of recently accessed messages. Sometimes there will be a historic message that is referenced and that will be materialized from backing store and rendered. It will likely fall out of cache if it's historical and not accessed again. Question: I don't get why it has to be in the session's state because you could as well use the information that a user is online as a guidance, even if the state would be stored somewhere out of the session. Wouldn't make a difference I guess and storing it in the session looks natural.
The state itself is not in the session. The session is the guide that the user is online. The session contains a listener that is attached to the User. The only real state that resides in the session is the state Question: I don't understand why we would need to store all entries in a cache, instead of only keeping the last n entries for each user based on some heuristics such as the last 3 days or something. I would somehow expect that the probability that a user wants to see a message is exponentially decreasing with the messages age. For example that someone wants to see a message that is the 1000 newest message in his timeline is probably almost zero.
Some people mine their timelines for information. I agree that some aging policy is necessary as 36B entries will consume a lot of storage in RAM or on disk, but the last 1,000 is likely too few based on what I have seen of actual user behavior. In terms of an aging policy in an RDBMS, the cost of aging out old entries is likely to be an index scan or something on that order (DELETE FROM mailbox WHERE date < xxx or a user-by-user DELETE WHERE id IN (SELECT messages > 1000 in mailbox)) ActionsHow do I add a content type to a HTTP Post action?
Platform SpecificAppleAre there are tips for building on Apples?
Usually, JDK 6 is the best choice. JDK 5 currently doesn't work
|