├── .gitignore
├── src
└── main
│ ├── webapp
│ ├── index.jsp
│ └── WEB-INF
│ │ ├── web.xml
│ │ └── applicationContext.xml
│ ├── assembly
│ ├── bin
│ │ ├── start.bat
│ │ └── start.sh
│ └── assembly.xml
│ └── java
│ └── com
│ └── crazypig
│ └── demo
│ └── embededwebapp
│ ├── controller
│ └── IndexController.java
│ └── Launcher.java
├── README.md
└── pom.xml
/.gitignore:
--------------------------------------------------------------------------------
1 | .settings
2 | .project
3 | .classpath
4 | target/*
5 | /target/
6 |
--------------------------------------------------------------------------------
/src/main/webapp/index.jsp:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hello World!
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Introduction :
2 |
3 | A demo jetty embeded web app project
4 |
5 | ## Usage :
6 |
7 | ```
8 | mvn clean package
9 | ```
10 |
11 | On Linux :
12 |
13 | ```
14 | cd target
15 | unzip jetty-embeded-webapp-demo-standalone.zip
16 | cd jetty-embeded-webapp-demo/bin
17 | ./start.sh
18 | ```
19 |
20 | On Windows :
21 |
22 | follow the same steps but finally run `start.bat`
23 |
--------------------------------------------------------------------------------
/src/main/assembly/bin/start.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | set "JAVA_CMD=%JAVA_HOME%/bin/java"
3 | if "%JAVA_HOME%" == "" goto noJavaHome
4 | if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
5 | :noJavaHome
6 | echo ---------------------------------------------------
7 | echo WARN: JAVA_HOME environment variable is not set.
8 | echo ---------------------------------------------------
9 | set "JAVA_CMD=java"
10 | :mainEntry
11 | @echo on
12 | "%JAVA_CMD%" -jar ..\jetty-embeded-webapp-demo.war
--------------------------------------------------------------------------------
/src/main/assembly/bin/start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #check JAVA_HOME & java
4 | noJavaHome=false
5 | if [ -z "$JAVA_HOME" ] ; then
6 | noJavaHome=true
7 | fi
8 | if [ ! -e "$JAVA_HOME/bin/java" ] ; then
9 | noJavaHome=true
10 | fi
11 | if $noJavaHome ; then
12 | echo
13 | echo "Error: JAVA_HOME environment variable is not set."
14 | echo
15 | exit 1
16 | fi
17 | RUN_CMD="\"$JAVA_HOME/bin/java\""
18 | RUN_CMD="$RUN_CMD -jar ../jetty-embeded-webapp-demo.war"
19 | #echo $RUN_CMD
20 | eval $RUN_CMD
21 |
--------------------------------------------------------------------------------
/src/main/java/com/crazypig/demo/embededwebapp/controller/IndexController.java:
--------------------------------------------------------------------------------
1 | package com.crazypig.demo.embededwebapp.controller;
2 |
3 | import org.springframework.stereotype.Controller;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.servlet.ModelAndView;
6 |
7 | @Controller
8 | public class IndexController {
9 |
10 | @RequestMapping({"/", "/index"})
11 | public ModelAndView index() {
12 |
13 | return new ModelAndView("index");
14 |
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 | jetty embeded webapp demo
3 |
4 |
5 | index
6 |
7 |
8 |
9 | springmvc
10 | org.springframework.web.servlet.DispatcherServlet
11 |
12 | contextConfigLocation
13 | WEB-INF/applicationContext.xml
14 |
15 | 1
16 |
17 |
18 |
19 | springmvc
20 | /index
21 |
22 |
23 | springmvc
24 | /
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/main/assembly/assembly.xml:
--------------------------------------------------------------------------------
1 |
5 | standalone
6 |
7 | zip
8 |
9 |
10 |
11 |
12 |
13 |
14 | target/${project.artifactId}.war
15 | /
16 |
17 |
18 |
19 |
20 | src/main/resources
21 | /conf
22 |
24 |
25 |
26 | src/main/assembly/bin
27 | /bin
28 |
29 | start.sh
30 |
31 | 0755
32 | unix
33 |
34 |
35 | src/main/assembly/bin
36 | /bin
37 |
38 | start.bat
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/main/java/com/crazypig/demo/embededwebapp/Launcher.java:
--------------------------------------------------------------------------------
1 | package com.crazypig.demo.embededwebapp;
2 |
3 | import java.io.File;
4 | import java.net.URL;
5 | import java.security.ProtectionDomain;
6 |
7 | import org.eclipse.jetty.server.Connector;
8 | import org.eclipse.jetty.server.Server;
9 | import org.eclipse.jetty.server.ServerConnector;
10 | import org.eclipse.jetty.webapp.WebAppContext;
11 |
12 | /**
13 | *
14 | * web应用启动器
15 | *
16 | * @author CrazyPig
17 | * @since 2016-08-03
18 | *
19 | */
20 | public class Launcher {
21 |
22 | public static final int DEFAULT_PORT = 8080;
23 | public static final String DEFAULT_CONTEXT_PATH = "/jetty-embeded-webapp";
24 | private static final String DEFAULT_APP_CONTEXT_PATH = "src/main/webapp";
25 |
26 |
27 | public static void main(String[] args) {
28 |
29 | runJettyServer(DEFAULT_PORT, DEFAULT_CONTEXT_PATH);
30 |
31 | }
32 |
33 | public static void runJettyServer(int port, String contextPath) {
34 |
35 | Server server = createJettyServer(port, contextPath);
36 | try {
37 | server.start();
38 | server.join();
39 | } catch (Exception e) {
40 | e.printStackTrace();
41 | } finally {
42 | try {
43 | server.stop();
44 | } catch (Exception e) {
45 | e.printStackTrace();
46 | }
47 | }
48 |
49 | }
50 |
51 | public static Server createJettyServer(int port, String contextPath) {
52 |
53 | Server server = new Server(port);
54 | server.setStopAtShutdown(true);
55 |
56 | ProtectionDomain protectionDomain = Launcher.class.getProtectionDomain();
57 | URL location = protectionDomain.getCodeSource().getLocation();
58 | String warFile = location.toExternalForm();
59 |
60 | WebAppContext context = new WebAppContext(warFile, contextPath);
61 | context.setServer(server);
62 |
63 | // 设置work dir,war包将解压到该目录,jsp编译后的文件也将放入其中。
64 | String currentDir = new File(location.getPath()).getParent();
65 | File workDir = new File(currentDir, "work");
66 | context.setTempDirectory(workDir);
67 |
68 | server.setHandler(context);
69 | return server;
70 |
71 | }
72 |
73 | public static Server createDevServer(int port, String contextPath) {
74 |
75 | Server server = new Server();
76 | server.setStopAtShutdown(true);
77 |
78 | ServerConnector connector = new ServerConnector(server);
79 | // 设置服务端口
80 | connector.setPort(port);
81 | connector.setReuseAddress(false);
82 | server.setConnectors(new Connector[] {connector});
83 |
84 | // 设置web资源根路径以及访问web的根路径
85 | WebAppContext webAppCtx = new WebAppContext(DEFAULT_APP_CONTEXT_PATH, contextPath);
86 | webAppCtx.setDescriptor(DEFAULT_APP_CONTEXT_PATH + "/WEB-INF/web.xml");
87 | webAppCtx.setResourceBase(DEFAULT_APP_CONTEXT_PATH);
88 | webAppCtx.setClassLoader(Thread.currentThread().getContextClassLoader());
89 | server.setHandler(webAppCtx);
90 |
91 | return server;
92 | }
93 |
94 | }
95 |
--------------------------------------------------------------------------------
/src/main/webapp/WEB-INF/applicationContext.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
21 |
23 |
25 |
26 |
27 |
29 |
30 |
31 | text/html; charset=UTF-8
32 | application/json;charset=UTF-8
33 |
34 |
35 |
36 |
38 |
39 |
40 | text/html; charset=UTF-8
41 | application/json;charset=UTF-8
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
54 |
55 |
56 |
58 |
59 |
60 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | com.crazypig
5 | jetty-embeded-webapp-demo
6 | war
7 | 0.0.1-SNAPSHOT
8 | jetty-embeded-webapp-demo Maven Webapp
9 | http://maven.apache.org
10 |
11 |
12 |
13 | UTF-8
14 | 9.2.10.v20150310
15 | 4.1.6.RELEASE
16 | 2.8.1
17 | 1.2.17
18 |
19 |
20 |
21 |
22 |
23 |
24 | org.eclipse.jetty
25 | jetty-server
26 | ${jetty.version}
27 |
28 |
29 |
30 |
31 | org.eclipse.jetty
32 | jetty-webapp
33 | ${jetty.version}
34 |
35 |
36 |
37 | org.eclipse.jetty
38 | jetty-jsp
39 | ${jetty.version}
40 |
41 |
42 |
43 |
44 |
45 | org.springframework
46 | spring-beans
47 | ${spring.version}
48 |
49 |
50 |
51 | org.springframework
52 | spring-context
53 | ${spring.version}
54 |
55 |
56 |
57 | org.springframework
58 | spring-webmvc
59 | ${spring.version}
60 |
61 |
62 |
63 | org.springframework
64 | spring-web
65 | ${spring.version}
66 |
67 |
68 |
69 |
70 |
71 | com.fasterxml.jackson.core
72 | jackson-core
73 | ${jackson.version}
74 |
75 |
76 |
77 | com.fasterxml.jackson.core
78 | jackson-annotations
79 | ${jackson.version}
80 |
81 |
82 |
83 | com.fasterxml.jackson.core
84 | jackson-databind
85 | ${jackson.version}
86 |
87 |
88 |
89 | junit
90 | junit
91 | 3.8.1
92 | test
93 |
94 |
95 |
96 |
97 |
98 | jetty-embeded-webapp-demo
99 |
100 |
101 | org.apache.maven.plugins
102 | maven-compiler-plugin
103 | 2.5.1
104 |
105 | 1.7
106 | 1.7
107 | UTF-8
108 |
109 |
110 |
111 |
112 | org.apache.maven.plugins
113 | maven-antrun-plugin
114 | 1.7
115 |
116 |
117 | main-class-placement
118 | prepare-package
119 |
120 |
121 |
123 |
125 |
126 |
127 |
128 |
129 |
130 |
131 | run
132 |
133 |
134 |
135 |
136 |
137 |
138 | org.apache.maven.plugins
139 | maven-shade-plugin
140 | 2.1
141 |
142 |
143 | package
144 |
145 | shade
146 |
147 |
148 | false
149 |
150 |
152 | com.crazypig.demo.embededwebapp.Launcher
153 |
154 |
155 |
156 |
157 | org.eclipse.jetty:*
158 | *:javax.servlet*
159 | org.glassfish:javax.el*
160 |
161 |
162 |
163 |
164 | *:*
165 |
166 | META-INF/*.SF
167 | META-INF/*.DSA
168 | META-INF/*.RSA
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 | maven-assembly-plugin
178 |
179 |
180 | assembly
181 | package
182 |
183 | single
184 |
185 |
186 |
187 | src/main/assembly/assembly.xml
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
--------------------------------------------------------------------------------