Skip to content

Commit 2eb57fc

Browse files
committed
Add skeleton for pub/sub server
1 parent 75a2af5 commit 2eb57fc

39 files changed

Lines changed: 1852 additions & 0 deletions
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" output="target/classes" path="src/main/java">
4+
<attributes>
5+
<attribute name="optional" value="true"/>
6+
<attribute name="maven.pomderived" value="true"/>
7+
</attributes>
8+
</classpathentry>
9+
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
10+
<attributes>
11+
<attribute name="optional" value="true"/>
12+
<attribute name="maven.pomderived" value="true"/>
13+
</attributes>
14+
</classpathentry>
15+
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
16+
<attributes>
17+
<attribute name="maven.pomderived" value="true"/>
18+
</attributes>
19+
</classpathentry>
20+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
21+
<attributes>
22+
<attribute name="maven.pomderived" value="true"/>
23+
</attributes>
24+
</classpathentry>
25+
<classpathentry kind="output" path="target/classes"/>
26+
</classpath>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Windows image file caches
2+
Thumbs.db
3+
ehthumbs.db
4+
5+
# Folder config file
6+
Desktop.ini
7+
target
8+
report
9+
build
10+
.settings
11+
log
12+
13+
# Recycle Bin used on file shares
14+
$RECYCLE.BIN/
15+
16+
# Windows Installer files
17+
*.cab
18+
*.msi
19+
*.msm
20+
*.msp
21+
22+
# =========================
23+
# Operating System Files
24+
# =========================
25+
26+
# OSX
27+
# =========================
28+
29+
.DS_Store
30+
.AppleDouble
31+
.LSOverride
32+
33+
# Icon must ends with two \r.
34+
Icon
35+
36+
# Thumbnails
37+
._*
38+
39+
# Files that might appear on external disk
40+
.Spotlight-V100
41+
.Trashes
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>simple-demo-rest</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
<buildCommand>
14+
<name>javafx.eclipse.f3editor.builder.F3Builder</name>
15+
<arguments>
16+
</arguments>
17+
</buildCommand>
18+
<buildCommand>
19+
<name>org.springframework.ide.eclipse.core.springbuilder</name>
20+
<arguments>
21+
</arguments>
22+
</buildCommand>
23+
<buildCommand>
24+
<name>org.eclipse.m2e.core.maven2Builder</name>
25+
<arguments>
26+
</arguments>
27+
</buildCommand>
28+
</buildSpec>
29+
<natures>
30+
<nature>org.springframework.ide.eclipse.core.springnature</nature>
31+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
32+
<nature>org.eclipse.jdt.core.javanature</nature>
33+
<nature>javafx.eclipse.f3editor.builder.F3Nature</nature>
34+
</natures>
35+
</projectDescription>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
@echo off
2+
echo Starting application. Please wait...
3+
4+
cd ..
5+
6+
echo %CLASSPATH%
7+
8+
set CLASSPATH=etc/.;lib/*;~1%;.
9+
10+
echo %CLASSPATH%
11+
12+
rem java "%JAVA_OPTS%" -classpath %CLASSPATH% org.simpleframework.demo.ApplicationLauncher etc/spring.xml etc/common.properties etc/local.properties
13+
java "%JAVA_OPTS%" -classpath %CLASSPATH% org.simpleframework.demo.ApplicationLauncher etc/spring.xml etc/common.properties etc/local.properties
14+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<html>
2+
<head>
3+
<title>Login Page</title>
4+
</head>
5+
<body>
6+
<h1>Please Login</h1>
7+
<form action='/login.html' method='POST'>
8+
<input type='text' name='user'/>
9+
<input type='submit' value='Sign In'/>
10+
</form>
11+
</body>
12+
</html>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<html>
2+
<head>
3+
<title>Chat Room</title>
4+
<script>
5+
function init() {
6+
websocket = new WebSocket("ws://localhost:6060/talk");
7+
8+
websocket.onopen = function() {
9+
document.getElementById("output").innerHTML += "<p>Welcome!</p>";
10+
};
11+
12+
websocket.onmessage = function(evt) {
13+
document.getElementById("output").innerHTML += "<p style='color: blue;'>" + evt.data + "</p>";
14+
};
15+
16+
websocket.onerror = function(evt) {
17+
document.getElementById("output").innerHTML += "<p style='color: red;'>" + evt.data + "</p>"; };
18+
}
19+
20+
function sendMessage(message) {
21+
document.getElementById("output").innerHTML += "<p>" + message + "</p>";
22+
websocket.send(message);
23+
}
24+
window.addEventListener("load", init, false);
25+
</script>
26+
</head>
27+
<body>
28+
<h2>Chat Room</h2>
29+
<small>Refresh browser to clear page and resubscribe</small>
30+
<br/>
31+
<br/>
32+
<input onkeypress="if(this.value) {if (window.event.keyCode == 13) { sendMessage(this.value); this.value = null; }}"/>
33+
<div id="output"></div>
34+
</body>
35+
</html>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
log4j.configFile=etc/log4j.xml
2+
3+
server.listenPort=6060
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
context.path=chat
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3+
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
4+
<appender class="org.apache.log4j.ConsoleAppender" name="STDOUT">
5+
<layout class="org.apache.log4j.PatternLayout">
6+
<param value="%d [%t] %-5p %c{2} - %m%n" name="ConversionPattern" />
7+
</layout>
8+
</appender>
9+
<appender class="org.apache.log4j.RollingFileAppender" name="R">
10+
<param value="log/app.log" name="File" />
11+
<param value="10" name="MaxBackupIndex" />
12+
<param value="1000KB" name="MaxFileSize" />
13+
<layout class="org.apache.log4j.PatternLayout">
14+
<param value="%d [%t] %-5p %c{2} - %m%n" name="ConversionPattern" />
15+
</layout>
16+
</appender>
17+
<appender class="org.apache.log4j.DailyRollingFileAppender" name="DAILY">
18+
<param value="'.'yyyy-MM-dd" name="DatePattern" />
19+
<param value="log/app.log" name="File" />
20+
<layout class="org.apache.log4j.PatternLayout">
21+
<param value="%d [%t] %-5p %c{2} - %m%n" name="ConversionPattern" />
22+
</layout>
23+
</appender>
24+
<appender class="org.apache.log4j.rolling.RollingFileAppender" name="COMPRESS">
25+
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
26+
<param name="ActiveFileName" value="log/app.log" />
27+
<param name="FileNamePattern" value="log/app.log.%d{yyyy-MM-dd}.gz" />
28+
</rollingPolicy>
29+
<layout class="org.apache.log4j.PatternLayout">
30+
<param value="%d [%t] %-5p %c{2} - %m%n" name="ConversionPattern" />
31+
</layout>
32+
</appender>
33+
<logger name="General">
34+
<level value="info" />
35+
</logger>
36+
<logger name="org.simpleframework">
37+
<level value="info" />
38+
</logger>
39+
<root>
40+
<level value="info" />
41+
<appender-ref ref="COMPRESS" />
42+
</root>
43+
</log4j:configuration>
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
3+
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
4+
5+
<bean id="LogConfigurer" class="org.simpleframework.demo.log4j.LogConfigurer" init-method="configure">
6+
<constructor-arg value="${log4j.configFile}" />
7+
</bean>
8+
9+
<bean id="ContentTypeResolver" class="org.simpleframework.demo.http.resource.ContentTypeResolver">
10+
<constructor-arg>
11+
<map>
12+
<entry key=".*.vm" value="text/html" />
13+
<entry key=".*.html" value="text/html" />
14+
<entry key=".*.png" value="image/png" />
15+
<entry key=".*.gif" value="image/gif" />
16+
<entry key=".*.css" value="text/css" />
17+
<entry key=".*.js" value="text/javascript" />
18+
<entry key=".*" value="text/html" />
19+
</map>
20+
</constructor-arg>
21+
</bean>
22+
23+
<bean id="FileManager" class="org.simpleframework.demo.io.FileManager">
24+
<constructor-arg value="data/${context.path}" />
25+
</bean>
26+
27+
<bean id="FileResolver" class="org.simpleframework.demo.io.FileResolver">
28+
<constructor-arg ref="FileManager" />
29+
<constructor-arg value="index.html" />
30+
<constructor-arg value="index.html" />
31+
</bean>
32+
33+
<bean id="FileSystemResource" class="org.simpleframework.demo.http.resource.FileSystemResource">
34+
<constructor-arg ref="FileResolver" />
35+
<constructor-arg ref="ContentTypeResolver" />
36+
</bean>
37+
38+
<bean id="NotFoundResource" class="org.simpleframework.demo.http.resource.StringResource">
39+
<constructor-arg value="Resource could not be found!!" />
40+
<constructor-arg value="text/plain; charset=UTF-8" />
41+
<constructor-arg value="UTF-8" />
42+
<constructor-arg value="NOT_FOUND" />
43+
</bean>
44+
45+
<bean id="FoundResource" class="org.simpleframework.demo.http.resource.StringResource">
46+
<constructor-arg value="Redirecting to /index.html" />
47+
<constructor-arg value="text/plain; charset=UTF-8" />
48+
<constructor-arg value="UTF-8" />
49+
<constructor-arg value="FOUND" />
50+
</bean>
51+
52+
<bean id="RedirectResource" class="org.simpleframework.demo.http.resource.RedirectResource">
53+
<constructor-arg ref="FoundResource" />
54+
<constructor-arg value="/index.html" />
55+
</bean>
56+
57+
<bean id="FailureResource" class="org.simpleframework.demo.http.resource.StringResource">
58+
<constructor-arg value="An error occured serving a resource!" />
59+
<constructor-arg value="text/plain; charset=UTF-8" />
60+
<constructor-arg value="UTF-8" />
61+
<constructor-arg value="INTERNAL_SERVER_ERROR" />
62+
</bean>
63+
64+
<bean id="ChatRoom" class="org.simpleframework.demo.chat.ChatRoom"/>
65+
66+
<bean id="ChatRoomLogin" class="org.simpleframework.demo.chat.ChatRoomLogin">
67+
<constructor-arg ref="FileSystemResource" />
68+
</bean>
69+
70+
<bean id="ResourceEngine" class="org.simpleframework.demo.http.resource.RegularExpressionEngine">
71+
<constructor-arg>
72+
<map>
73+
<entry key="/login.html" value-ref="ChatRoomLogin" />
74+
<entry key=".*favicon.ico" value-ref="NotFoundResource" />
75+
<entry key=".*.html" value-ref="FileSystemResource" />
76+
<entry key=".*.png" value-ref="FileSystemResource" />
77+
<entry key=".*.css" value-ref="FileSystemResource" />
78+
<entry key=".*.js" value-ref="FileSystemResource" />
79+
<entry key="/" value-ref="RedirectResource" />
80+
</map>
81+
</constructor-arg>
82+
<constructor-arg ref="NotFoundResource" />
83+
</bean>
84+
85+
<bean id="ResourceContainer" class="org.simpleframework.demo.http.resource.ResourceContainer">
86+
<constructor-arg ref="ResourceEngine" />
87+
<constructor-arg ref="FailureResource" />
88+
</bean>
89+
90+
<bean id="TraceAnalyzer" class="org.simpleframework.demo.trace.LogAnalyzer" init-method="start"/>
91+
92+
<bean id="WebContainer" class="org.simpleframework.demo.http.WebContainer">
93+
<constructor-arg ref="ResourceContainer" />
94+
<constructor-arg value="Chat/1.0" />
95+
</bean>
96+
97+
<bean id="WebSocketRouter" class="org.simpleframework.http.socket.service.DirectRouter">
98+
<constructor-arg ref="ChatRoom" />
99+
</bean>
100+
101+
<bean id="WebSocketContainer" class="org.simpleframework.http.socket.service.RouterContainer">
102+
<constructor-arg ref="WebContainer" />
103+
<constructor-arg ref="WebSocketRouter" />
104+
<constructor-arg value="2" />
105+
</bean>
106+
107+
<bean id="WebServer" class="org.simpleframework.demo.http.WebServer" init-method="start">
108+
<constructor-arg ref="WebSocketContainer" />
109+
<constructor-arg ref="TraceAnalyzer"/>
110+
<constructor-arg value="${server.listenPort}" />
111+
</bean>
112+
113+
</beans>

0 commit comments

Comments
 (0)