|
26 | 26 | <span class="pl-c">### auto or a real path, e,g /usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so</span>
|
27 | 27 | <span class="pl-k">jvm_path</span> auto;
|
28 | 28 |
|
29 |
| -<span class="pl-c">### my app jars e.g. clojure-1.5.1.jar , groovy-2.3.4.jar ,etc.</span> |
| 29 | +<span class="pl-c">### my app jars e.g. clojure-1.5.1.jar , groovy-2.3.4.jar,etc.</span> |
30 | 30 | <span class="pl-c">### if we only use Java handler we need not place clojure-xxx.jar here.</span>
|
31 | 31 | <span class="pl-k">jvm_var</span> my_other_jars <span class="pl-s">'my_jar_dir/clojure-1.5.1.jar'</span>;
|
32 | 32 |
|
33 | 33 | <span class="pl-c">### my app classpath, windows user should use ';' as the separator</span>
|
| 34 | +<span class="pl-c">### for clojure devs the simplest way is to use the result jar file from `lein uberjar` here</span> |
34 | 35 | <span class="pl-k">jvm_options</span> <span class="pl-s">"-Djava.class.path=jars/nginx-clojure-0.4.2.jar:#{my_other_jars}"</span>;
|
35 | 36 |
|
36 | 37 | <span class="pl-c">###or we can put jars in some directories, e.g. jars-dir1, jars-dir2</span>
|
37 | 38 | <span class="pl-c">###so that all jars or direct sub directories from these directories will be appended to the jvm classpath</span>
|
38 | 39 | <span class="pl-c">##Note: if you use build-in extensions (e.g. SUN JCE) from jdk please append these dirs, e.g. the value of </span>
|
39 | 40 | <span class="pl-c">## System.getProperty("java.ext.dirs")</span>
|
40 |
| -<span class="pl-k">jvm_options</span> <span class="pl-s">"-Djava.ext.dirs=jars-dir1:jars-dir2"</span> </pre></div> |
| 41 | +<span class="pl-k">jvm_options</span> <span class="pl-s">"-Djava.ext.dirs=jars-dir1:jars-dir2"</span>;</pre></div> |
41 | 42 | </li>
|
42 | 43 | <li>
|
43 |
| -<p>Setting inline Http Service Handler</p> |
| 44 | +<p>Setting Inline Http Service Handler</p> |
44 | 45 |
|
45 | 46 | <p>For Clojure:</p>
|
46 | 47 |
|
47 |
| -<div class="highlight highlight-nginx"><pre> |
| 48 | +<div class="highlight highlight-nginx"><pre> <span class="pl-c">##Within `server {` block in nginx.conf</span> |
48 | 49 | <span class="pl-k">location</span> <span class="pl-en">/clojure </span>{
|
49 | 50 | <span class="pl-k">content_handler_type</span> <span class="pl-s">'clojure'</span>;
|
50 | 51 | <span class="pl-k">content_handler_code</span> <span class="pl-s">' </span>
|
|
59 | 60 |
|
60 | 61 | <p>For Groovy:</p>
|
61 | 62 |
|
62 |
| -<div class="highlight highlight-nginx"><pre> |
| 63 | +<div class="highlight highlight-nginx"><pre> <span class="pl-c">##Within `server {` block in nginx.conf</span> |
63 | 64 | <span class="pl-k">location</span> <span class="pl-en">/groovy </span>{
|
64 | 65 | <span class="pl-k">content_handler_type</span> <span class="pl-s">'groovy'</span>;
|
65 | 66 | <span class="pl-k">content_handler_code</span> <span class="pl-s">' </span>
|
|
74 | 75 | <span class="pl-s"> }</span>
|
75 | 76 | <span class="pl-s"> '</span>;
|
76 | 77 | }</pre></div>
|
| 78 | + |
| 79 | +<p>For Java:</p> |
| 80 | + |
| 81 | +<blockquote> |
| 82 | +<p><strong>Note:</strong> |
| 83 | +So far nginx-clojure has not supported inline java handler, please see the next section to learn how to use an external java handler.</p> |
| 84 | +</blockquote> |
77 | 85 | </li>
|
78 |
| -</ol> |
| 86 | +<li> |
| 87 | +<p>Setting Compojure Router/External Http Service Handler</p> |
| 88 | + |
| 89 | +<p>For Clojure:</p> |
| 90 | + |
| 91 | +<div class="highlight highlight-nginx"><pre><span class="pl-c">##Within `server {` block in nginx.conf</span> |
| 92 | +<span class="pl-k">location</span> <span class="pl-en">/ </span>{ |
| 93 | + <span class="pl-k">content_handler_type</span> clojure; |
| 94 | + <span class="pl-k">content_handler_name</span> <span class="pl-s">'example/my-app'</span>; |
| 95 | +}</pre></div> |
| 96 | + |
| 97 | +<p>Make sure that the below source is in the classpath.</p> |
| 98 | + |
| 99 | +<div class="highlight highlight-clojure"><pre><span class="pl-c">;;;my_app.clj</span> |
| 100 | +(<span class="pl-k">ns</span> <span class="pl-e">example</span> |
| 101 | + (<span class="pl-c1">:require</span> [compojure.core <span class="pl-c1">:refer</span> <span class="pl-c1">:all</span>] |
| 102 | + [compojure.route <span class="pl-c1">:as</span> route])) |
| 103 | + |
| 104 | +(<span class="pl-k">defroutes</span> my-app |
| 105 | + (<span class="pl-en">GET</span> <span class="pl-s"><span class="pl-pds">"</span>/<span class="pl-pds">"</span></span> [] <span class="pl-s"><span class="pl-pds">"</span><h1>Hello World</h1><span class="pl-pds">"</span></span>) |
| 106 | + (<span class="pl-en">route/not-found</span> <span class="pl-s"><span class="pl-pds">"</span><h1>Page not found</h1><span class="pl-pds">"</span></span>))</pre></div> |
79 | 107 |
|
80 | 108 | <p>For Java:</p>
|
81 | 109 |
|
82 |
| -<div class="highlight highlight-nginx"><pre> |
83 |
| - <span class="pl-k">location</span> <span class="pl-en">/groovy </span>{ |
84 |
| - <span class="pl-k">content_handler_type</span> <span class="pl-s">'java'</span>; |
85 |
| - <span class="pl-k">content_handler_name</span> <span class="pl-s">'mytest.HelloService'</span>; |
86 |
| - } |
| 110 | +<div class="highlight highlight-nginx"><pre> <span class="pl-c">##Within `server {` block in nginx.conf</span> |
| 111 | + <span class="pl-k">location</span> <span class="pl-en">/java </span>{ |
| 112 | + <span class="pl-k">content_handler_type</span> <span class="pl-s">'java'</span>; |
| 113 | + <span class="pl-k">content_handler_name</span> <span class="pl-s">'mytest.HelloService'</span>; |
| 114 | + } |
87 | 115 |
|
88 | 116 | </pre></div>
|
89 | 117 |
|
90 | 118 | <p>Make sure that the class of the below source is in the classpath.</p>
|
91 | 119 |
|
92 |
| -<div class="highlight highlight-java"><pre><span class="pl-k">package</span> <span class="pl-smi">mytest</span>; |
| 120 | +<div class="highlight highlight-java"><pre> <span class="pl-k">package</span> <span class="pl-smi">mytest</span>; |
93 | 121 |
|
94 |
| -<span class="pl-k">import</span> <span class="pl-smi">java.util.Map</span>; |
| 122 | + <span class="pl-k">import</span> <span class="pl-smi">java.util.Map</span>; |
95 | 123 |
|
96 |
| -<span class="pl-k">import</span> <span class="pl-smi">nginx.clojure.java.ArrayMap</span>; |
97 |
| -<span class="pl-k">import</span> <span class="pl-smi">nginx.clojure.java.NginxJavaRingHandler</span>; |
98 |
| -<span class="pl-k">import static</span> <span class="pl-smi">nginx.clojure.MiniConstants.*</span>; |
| 124 | + <span class="pl-k">import</span> <span class="pl-smi">nginx.clojure.java.ArrayMap</span>; |
| 125 | + <span class="pl-k">import</span> <span class="pl-smi">nginx.clojure.java.NginxJavaRingHandler</span>; |
| 126 | + <span class="pl-k">import static</span> <span class="pl-smi">nginx.clojure.MiniConstants.*</span>; |
99 | 127 |
|
100 |
| -<span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">HelloService</span> <span class="pl-k">implements</span> <span class="pl-e">NginxJavaRingHandler</span> { |
| 128 | + <span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">HelloService</span> <span class="pl-k">implements</span> <span class="pl-e">NginxJavaRingHandler</span> { |
101 | 129 |
|
102 |
| - <span class="pl-k">@Override</span> |
103 |
| - <span class="pl-k">public</span> <span class="pl-k">Object</span>[] <span class="pl-en">invoke</span>(<span class="pl-k">Map<<span class="pl-smi">String</span>, <span class="pl-smi">Object</span>></span> <span class="pl-v">request</span>) { |
104 |
| - <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-smi">Object</span>[] { |
105 |
| - <span class="pl-c1">NGX_HTTP_OK</span>, <span class="pl-c">//http status 200</span> |
106 |
| - <span class="pl-smi">ArrayMap</span><span class="pl-k">.</span>create(<span class="pl-c1">CONTENT_TYPE</span>, <span class="pl-s"><span class="pl-pds">"</span>text/plain<span class="pl-pds">"</span></span>), <span class="pl-c">//headers map</span> |
107 |
| - <span class="pl-s"><span class="pl-pds">"</span>Hello, Java & Nginx!<span class="pl-pds">"</span></span> <span class="pl-c">//response body can be string, File or Array/Collection of string or File</span> |
108 |
| - }; |
109 |
| - } |
110 |
| -}</pre></div> |
| 130 | + <span class="pl-k">@Override</span> |
| 131 | + <span class="pl-k">public</span> <span class="pl-k">Object</span>[] <span class="pl-en">invoke</span>(<span class="pl-k">Map<<span class="pl-smi">String</span>, <span class="pl-smi">Object</span>></span> <span class="pl-v">request</span>) { |
| 132 | + <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-smi">Object</span>[] { |
| 133 | + <span class="pl-c1">NGX_HTTP_OK</span>, <span class="pl-c">//http status 200</span> |
| 134 | + <span class="pl-smi">ArrayMap</span><span class="pl-k">.</span>create(<span class="pl-c1">CONTENT_TYPE</span>, <span class="pl-s"><span class="pl-pds">"</span>text/plain<span class="pl-pds">"</span></span>), <span class="pl-c">//headers map</span> |
| 135 | + <span class="pl-s"><span class="pl-pds">"</span>Hello, Java & Nginx!<span class="pl-pds">"</span></span> <span class="pl-c">//response body can be string, File or Array/Collection of string or File</span> |
| 136 | + }; |
| 137 | + } |
| 138 | + }</pre></div> |
| 139 | +</li> |
| 140 | +</ol> |
111 | 141 |
|
112 | 142 | <hr>
|
113 | 143 |
|
114 | 144 | <blockquote>
|
115 | 145 | <p><strong>Note:</strong>
|
116 |
| -For more advanced configurations such as external Http Service Handler, enable coroutine based socket, thread pool etc. Please check them from <a href="configuration.html">HERE</a>.</p> |
| 146 | +For more advanced configurations such as enable coroutine based socket, thread pool etc. Please check them from <a href="configuration.html">HERE</a>.</p> |
117 | 147 | </blockquote>
|
118 | 148 |
|
119 | 149 | <h2>
|
120 | 150 | <a id="user-content-start-up" class="anchor" href="#start-up" aria-hidden="true"><span class="octicon octicon-link"></span></a>Start up</h2>
|
121 | 151 |
|
122 | 152 | <div class="highlight highlight-nginx"><pre>
|
123 |
| -$ <span class="pl-k">cd</span> nginx-clojure-0.3.0/nginx-1.6.2 |
| 153 | +$ <span class="pl-k">cd</span> nginx-clojure-0.4.2/nginx-1.8.0 |
124 | 154 | $ ./<span class="pl-k">nginx</span></pre></div>
|
125 | 155 |
|
126 | 156 | <p>If everything is ok, we can access our first http service by this url</p>
|
127 | 157 |
|
128 | 158 | <div class="highlight highlight-nginx"><pre><span class="pl-c">### For Clojure</span>
|
129 | 159 | http://localhost:8080/<span class="pl-k">clojure</span>
|
130 | 160 |
|
| 161 | +<span class="pl-c">### For Clojure Compojure Router</span> |
| 162 | +http://localhost:<span class="pl-k">8080</span> |
| 163 | + |
| 164 | + |
131 | 165 | <span class="pl-c">### For Groovy</span>
|
132 | 166 | http://localhost:8080/<span class="pl-k">groovy</span>
|
133 | 167 |
|
|
139 | 173 | <h2>
|
140 | 174 | <a id="user-content-reload" class="anchor" href="#reload" aria-hidden="true"><span class="octicon octicon-link"></span></a>Reload</h2>
|
141 | 175 |
|
142 |
| -<p>If we change some settings we can reload the settings without stoping our services.</p> |
| 176 | +<p>If we change some settings we can reload the settings without stopping our services.</p> |
143 | 177 |
|
144 | 178 | <div class="highlight highlight-nginx"><pre>$ ./<span class="pl-k">nginx</span> -s reload</pre></div>
|
145 | 179 |
|
|
0 commit comments