Skip to content

Commit d8a1d57

Browse files
author
Sean Eidemiller
committed
Added support for test vs. production Persevere instances.
Simply pass the -t argument to server-start.sh and server-stop.sh to start and stop the test instance. For example: ./server-start.sh -t ./server-stop.sh -t The test instance runs on port 8089 while the production instance runs on 8088.
1 parent 62a9efd commit d8a1d57

18 files changed

+278
-15
lines changed

.gitignore

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ tmp
99
sc-integrate
1010
TODO
1111
server.out
12+
server-test.out
1213
server.err
14+
server-test.err
1315
abbot/
14-
tasks-server/WEB-INF/data
15-
tasks-server/WEB-INF/config/generated.js
16+
tasks-server/prod/WEB-INF/data
17+
tasks-server/prod/WEB-INF/config/generated.js
18+
tasks-server/test/WEB-INF/data
19+
tasks-server/test/WEB-INF/config/generated.js
1620
frameworks/sproutcore-statechart/

server-start.sh

+24-11
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,51 @@
22
# A simple shell script that launches the Persevere server.
33
# Author: Sean Eidemiller
44

5-
DIR=`pwd`
5+
START_DIR=`pwd`
6+
MODE=prod
7+
PORT=8088
8+
OUT_FILE="$START_DIR/server.out"
9+
ERR_FILE="$START_DIR/server.err"
10+
11+
if [ "$1" = "-t" ]; then
12+
MODE=test
13+
PORT=8089
14+
OUT_FILE="$START_DIR/server-test.out"
15+
ERR_FILE="$START_DIR/server-test.err"
16+
fi
17+
18+
SERVER_DIR="tasks-server/$MODE"
619

720
if [ -f /bin/echo ]; then
821
ECHO="/bin/echo"
922
else
1023
ECHO="echo"
1124
fi
1225

13-
"$ECHO" -n "Starting Persevere server... "
26+
"$ECHO" -n "Starting Persevere [$MODE] server... "
1427

15-
if [ ! -d tasks-server ]; then
28+
if [ ! -d "$SERVER_DIR" ]; then
1629
echo "FAILED"
17-
echo "Unable to locate tasks-server directory."
30+
echo "Unable to locate $SERVER_DIR directory."
1831
exit 1
1932
fi
2033

21-
cd tasks-server
34+
cd "$SERVER_DIR"
2235

23-
"$DIR"/persevere/bin/persvr -p 8088 --base-uri /tasks-server > "$DIR"/server.out 2> server.err &
36+
"$START_DIR"/persevere/bin/persvr -p "$PORT" --base-uri /tasks-server > "$OUT_FILE" 2> "$ERR_FILE" &
2437

2538
if [ "$?" -eq 0 ]; then
2639
echo "OK"
2740
echo "Server PID: $!"
2841
else
2942
echo "FAILED"
30-
cat server.err
31-
rm server.err
43+
cat "$ERR_FILE"
44+
rm "$ERR_FILE"
3245
exit 1
3346
fi
3447

35-
if [ -f server.err ]; then
36-
rm server.err
48+
if [ -f "$ERR_FILE" ]; then
49+
rm "$ERR_FILE"
3750
fi
3851

39-
cd "$DIR"
52+
cd "$START_DIR"

server-stop.sh

+10-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,23 @@
22
# A simple script for stopping the Persevere server.
33
# Author: Sean Eidemiller
44

5+
MODE=prod
6+
PORT=8088
7+
58
if [ -f /bin/echo ]; then
69
ECHO="/bin/echo"
710
else
811
ECHO="echo"
912
fi
1013

11-
"$ECHO" -n "Stopping Persevere server... "
14+
if [ "$1" = "-t" ]; then
15+
MODE=test
16+
PORT=8089
17+
fi
18+
19+
"$ECHO" -n "Stopping Persevere [$MODE] server... "
1220

13-
PID=`ps aux | grep java | grep persevere | grep -v grep | awk '{print $2}'`
21+
PID=`ps aux | grep java | grep persevere | grep "$PORT" | grep -v grep | awk '{print $2}'`
1422

1523
if [ ! -z "$PID" ]; then
1624
kill "$PID"
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

tasks-server/test/ReadMe

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
== Welcome to Persevere ==
2+
3+
Persevere is a flexible JSON storage and JavaScript application server. It provides everything
4+
you need to create a rich server side application environment for AJAX front ends, distributed
5+
computing, standard web application server front ends and more.
6+
7+
For more detailed documentation, check out http://docs.persvr.org.
8+
9+
== Getting started ==
10+
11+
1. At the command prompt, create a new Persevere server instance using the persvr command
12+
and your application name. Ex: persvr --gen-server myapp
13+
2. Change directory into myapp and start the server: persvr
14+
3. Go to http://localhost:8080/ and see your new app
15+
16+
== Console ==
17+
18+
You can interact with your app from the JavaScript console as it's running.
19+
Load, inspect and modify objects, create or delete them, and exercise your classes methods.
20+
See the Rhino documentation for available commands at the console.
21+
22+
== Contents ==
23+
24+
/
25+
Put all your static files at the root of your instance.
26+
27+
/images
28+
A convenience folder for storing images.
29+
30+
/css
31+
A convenience folder for storing your css files.
32+
33+
WEB-INF/config
34+
Contains your JSON Schema files, defining your classes. These files can be organized in
35+
any manner as they're read in recursively.
36+
37+
WEB-INF/tests
38+
Contains JavaScript files to test your application.
39+
40+
WEB-INF/data
41+
Persevere's data storage.
42+
43+
WEB-INF/jslib
44+
Any additional JavaScript files you want available in your server side environment.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Class({
2+
id: "project",
3+
properties: {
4+
name: { type: "any", optional: false },
5+
timeLeft: { type: "any", optional: true },
6+
tasks: { type: "array", optional: true }
7+
}
8+
});
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Class({
2+
id: "task",
3+
properties: {
4+
name: { type: "any", optional: false },
5+
description: { type: "any", optional: true },
6+
type: { type: "any", optional: true },
7+
priority: { type: "any", optional: true },
8+
status: { type: "any", optional: true, },
9+
validation: { type: "any", optional: true, },
10+
effort: { type: "any", optional: true },
11+
submitter: { optional: true },
12+
assignee: { optional: true }
13+
}
14+
});
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Class({
2+
id: "user",
3+
properties: {
4+
name: { type: "any", optional: false },
5+
loginName: { type: "any", optional: false },
6+
role: { type: "any", optional: false, enum: ["Manager", "Developer", "Tester"] },
7+
preferences: { type: "object", optional: true },
8+
authToken: { type: "any", optional: true }
9+
}
10+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
tests([
2+
function myFirstTest() {
3+
assert(true);
4+
assertEqual(1, 1);
5+
},
6+
]);
7+

tasks-server/test/WEB-INF/web.xml

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!-- Persevere Configuration
3+
Copyright (C) 2008 Kris Zyp SitePen
4+
-->
5+
<!-- This is web.xml file with filter definitions that you can use for Persevere server or copy into your web.xml file
6+
add Persevere to an existing web application-->
7+
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
8+
<filter>
9+
<description>Jspon Data Requester</description>
10+
<filter-name>Persevere</filter-name>
11+
<filter-class>org.persvr.remote.PersevereFilter</filter-class>
12+
</filter>
13+
14+
<!-- Caching/Compression Filters are from Resource Accelerate (http://www.xucia.com/page/Resource_Accelerate) -->
15+
<filter>
16+
<filter-name>CacheFilter</filter-name>
17+
<filter-class>com.xucia.resourceaccelerate.CacheHeadersFilter</filter-class>
18+
<!-- <init-param>
19+
<param-name>cache-folder</param-name> <!- what folder to use for caching compressed file (relative the webapp root directory) ->
20+
<param-value>ra-cache</param-value> <!- folder or path ->
21+
</init-param> -->
22+
<init-param>
23+
<param-name>expiration-time</param-name> <!-- how long the resource should stay in the browser cache -->
24+
<param-value>86400000</param-value> <!-- one day -->
25+
</init-param>
26+
</filter>
27+
<filter>
28+
<filter-name>CompressAndCacheFilter</filter-name>
29+
<filter-class>com.xucia.resourceaccelerate.CompressAndCacheHeadersFilter</filter-class>
30+
<init-param>
31+
<param-name>caching-headers-enabled</param-name> <!-- sets whether or not caching headers should be enabled-->
32+
<param-value>true</param-value> <!-- this is true by default, must be set to false to disable -->
33+
</init-param>
34+
<init-param>
35+
<param-name>expiration-time</param-name> <!-- how long the resource should stay in the browser cache -->
36+
<param-value>86400000</param-value> <!-- one day -->
37+
</init-param>
38+
<init-param>
39+
<param-name>cached-compressed-data</param-name> <!-- Specifies if the compressed gzip files should be cached so they don't have to re-gzipped. This can be turned off for dynamic content, so it doesn't have to cache -->
40+
<param-value>true</param-value> <!-- true is the default-->
41+
</init-param>
42+
</filter>
43+
44+
<filter-mapping>
45+
<filter-name>Persevere</filter-name>
46+
<url-pattern>/*</url-pattern>
47+
</filter-mapping>
48+
49+
50+
<!-- These file types will only have caching headers applied -->
51+
<filter-mapping>
52+
<filter-name>CacheFilter</filter-name>
53+
<url-pattern>*.gif</url-pattern>
54+
</filter-mapping>
55+
<filter-mapping>
56+
<filter-name>CacheFilter</filter-name>
57+
<url-pattern>*.jpg</url-pattern>
58+
</filter-mapping>
59+
<filter-mapping>
60+
<filter-name>CacheFilter</filter-name>
61+
<url-pattern>*.png</url-pattern>
62+
</filter-mapping>
63+
<filter-mapping>
64+
<filter-name>CacheFilter</filter-name>
65+
<url-pattern>*.jpeg</url-pattern>
66+
</filter-mapping>
67+
68+
<!-- These file types will have caching headers and gzip applied -->
69+
<filter-mapping>
70+
<filter-name>CompressAndCacheFilter</filter-name>
71+
<url-pattern>*.html</url-pattern>
72+
</filter-mapping>
73+
<filter-mapping>
74+
<filter-name>CompressAndCacheFilter</filter-name>
75+
<url-pattern>*.css</url-pattern>
76+
</filter-mapping>
77+
<filter-mapping>
78+
<filter-name>CompressAndCacheFilter</filter-name>
79+
<url-pattern>*.js</url-pattern>
80+
</filter-mapping>
81+
82+
<listener>
83+
<listener-class>
84+
org.persvr.remote.SessionListener
85+
</listener-class>
86+
</listener>
87+
88+
<!-- If you are using Tomcat, you should use this Channels definition instead of the one below for optimum Comet performance
89+
<servlet>
90+
<servlet-name>Channels</servlet-name>
91+
<servlet-class>org.persvr.servlet.TomcatChannels</servlet-class>
92+
</servlet> -->
93+
94+
<servlet>
95+
<servlet-name>Channels</servlet-name>
96+
<servlet-class>org.persvr.servlet.Channels</servlet-class>
97+
</servlet>
98+
<servlet>
99+
<servlet-name>Bayeux</servlet-name>
100+
<servlet-class>org.persvr.servlet.Bayeux</servlet-class>
101+
</servlet>
102+
103+
104+
105+
<servlet-mapping>
106+
<servlet-name>Channels</servlet-name>
107+
<url-pattern>/channels</url-pattern>
108+
</servlet-mapping>
109+
<servlet-mapping>
110+
<servlet-name>Bayeux</servlet-name>
111+
<url-pattern>/cometd</url-pattern>
112+
</servlet-mapping>
113+
<welcome-file-list>
114+
<welcome-file>index.html</welcome-file>
115+
<welcome-file>index.htm</welcome-file>
116+
</welcome-file-list>
117+
118+
</web-app>

tasks-server/test/index.html

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2+
<html xmlns="http://www.w3.org/1999/xhtml">
3+
<head>
4+
<title>Persevere: Welcome</title>
5+
<style type="text/css">
6+
body {
7+
margin: 0 0 25px 0;
8+
margin-bottom: 25px;
9+
padding: 0;
10+
font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
11+
font-size: 13px;
12+
color: #333;
13+
background-color: #f0f0f0;
14+
}
15+
#content {
16+
background-color: white;
17+
width: 750px;
18+
margin: 0;
19+
padding: 25px 0 25px 10px;
20+
margin-left: auto;
21+
margin-right: auto;
22+
border: 1px solid #aaa;
23+
border-top: none;
24+
}
25+
</style>
26+
</head>
27+
<body>
28+
<div id="content">
29+
<h1>Welcome!</h1>
30+
<p>If you're reading this, your new Persevere instance has been created successfully - nice work!</p>
31+
<h3>Getting Started</h3>
32+
<p>The easiest way to get started is to jump straight to the <a href="/explorer.html">explorer</a> where you can create, edit and browse your data.</p>
33+
<p>The <a href="http://docs.persvr.org/documentation/hello-world-tutorial">Hello World Tutorial</a> provides step-by-step instructions for getting up and running.</p>
34+
<p>For more info, check the <a href="http://docs.persvr.org">documentation</a> or hop on the <a href="http://groups.google.com/group/persevere-framework">mailing list</a>.</p>
35+
</div>
36+
</body>
37+
</html>

0 commit comments

Comments
 (0)