2013-11-05 7 views
17

मैंने वेबपैप बनाने के लिए स्पार्क वेब फ्रेमवर्क का उपयोग किया, लेकिन मुझे नहीं पता कि इस वेबएप को कैसे तैनात किया जाए। मुझे खेद है कि अगर यह बहुत ही बुनियादी है, लेकिन मैं ढांचे चिंगारी नया हूँ और मुझे लगता है कि मेरे गाइड कैसे एक चिंगारी webapp .:एक स्पार्क जावा वेब ऐप कैसे तैनात करें?

  • कैसे एक चिंगारी webapp स्टैंडअलोन तैनात करने के लिए तैनात करने के लिए किसी भी दस्तावेज़ नहीं मिल सकता है
  • स्पार्क वेबपैप (युद्ध फ़ाइल या ऐसी फ़ाइल में) कैसे बनाएं और वेब सर्वर (जेटी या टॉमकैट) के साथ तैनात करें।

उत्तर

15

आप पहली बार एक नियमित रूप से जावा परियोजना है कि एक .war फ़ाइल में बनाया जा सकता (ग्रहण में यह एक गतिशील वेब परियोजना होगा)

इस लिंक पर चिंगारी प्रलेखन का वर्णन करता है क्या करने की जरूरत है बनाने की आवश्यकता होगी अपनी परियोजनाओं web.xml फ़ाइल में जोड़ा जाना चाहिए। http://sparkjava.com/documentation.html#other-webserver

फ़िल्टर के भीतर प्रलेखन में सूचीबद्ध पैरा-वैल्यू को उस कक्षा को इंगित करने की आवश्यकता है जहां आपने अपने मार्गों को परिभाषित किया है।

इसके अतिरिक्त, सभी कोड जो पहले मुख्य() में थे, को init() में स्थानांतरित करने की आवश्यकता है।

@Override 
public void init() { 
    get(new Route("/test") { 
     @Override 
     public Object handle(Request request, Response response) { 
      return "response goes here; 
     } 

    }); 

इसके अलावा, मुझे JBoss करने के लिए इसे तैनात करने के लिए में, मैं केवल चिंगारी पुस्तकालयों और न घाट पुस्तकालयों को शामिल करने के लिए किया था। एक बार ऐसा करने के बाद, आप युद्ध को बनाने और इसे अपने सर्वर पर तैनात करने में सक्षम होना चाहिए जैसा कि आप किसी भी अन्य जावा प्रोजेक्ट करेंगे।

+0

आप जेटी को युद्ध में शामिल होने से कैसे फ़िल्टर करते हैं? – voddan

5

यहाँ आप तैनाती के बारे में जानकारी प्राप्त हो:

<web-app> 
    <!-- some options --> 
    <filter> 
    <filter-name>SparkFilter</filter-name> 
    <filter-class>spark.servlet.SparkFilter</filter-class> 
    <init-param> 
     <param-name>applicationClass</param-name> 
     <param-value>your.package.Application</param-value> 
    </init-param> 
    </filter> 

    <filter-mapping> 
    <filter-name>SparkFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
</web-app> 

Application वर्ग इंटरफ़ेस spark.servlet.SparkApplication के लागू करने और में मार्गों प्रारंभ करने में होना चाहिए: web.xml config के लिए निर्धारित फ़िल्टर विकल्प http://sparkjava.com/documentation.html#embedded-web-server

सभी की फिस्ट init() विधि। के रूप में की तरह (एसई 8 जावा में आप रूटर के लिए Lambda Expression उपयोग कर सकते हैं।)

यह एक लग रहा है:

package your.package; 

import static spark.Spark.*; 

public class Application implements SparkApplication { 
    @Override 
    public void init() { 
     get("/", (request, response) -> "Hello World"); 

     get("/hello/:name", (request, response) -> { 
      return "Hello: " + request.params(":name"); 
     }); 
    } 
} 

App के साथ इस विन्यास बिल्ला और glassfish सर्वर के लिए ठीक काम करता है।

1

स्टैंडअलोन परिदृश्य के लिए, आप केवल Gradle (या मेवेन) का उपयोग वसा बनाने के लिए कर सकते हैं (जिसका अर्थ है एम्बेडेड जेटी सर्वर सहित सभी निर्भरताएं), निष्पादन योग्य जार फ़ाइल।

apply plugin: 'java' 
apply plugin: 'application' 

// TODO Change this to your class with your main method 
mainClassName = "my.app.Main" 

defaultTasks 'run' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'com.sparkjava', name: 'spark-core', version: '2.5.5' 
    // TODO add more dependencies here... 
} 

// Create a fat executable jar 
jar { 
    manifest { 
     attributes "Main-Class": "$mainClassName" 
    } 

    from { 
     configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
    } 

    archiveName "app.jar" 
} 

gradle build के माध्यम से कमांड लाइन पर आप आवेदन बिल्ड: यहाँ एक सरल build.gradle फ़ाइल सिर्फ इतना है कि करता है। यह तो बस चलाने के लिए अपनी build/libs फ़ोल्डर में एक app.jar फ़ाइल बनाने जाएगा:

java -jar build/libs/app.jar 

तुम सच में तारीख तक :) तो आप अपने JRE और आवेदन जार पैकेज Docker उपयोग करने के लिए होना चाहते हैं, इस प्रकार आप नहीं कर रहे हैं सर्वर पर स्थापित सॉफ़्टवेयर स्टैक पर निर्भर है।ऐसा करने के लिए हम एक Dockerfile उपयोग कर सकते हैं:

FROM java:8 

ADD build/libs/app.jar/

EXPOSE 4567 
ENTRYPOINT ["java", "-jar", "app.jar"] 

बिल्ड डोकर छवि और इसे चलाने, जैसे:

docker build -t myapp:v1 . 
docker run --rm --name myapp -p 4567:4567 myapp:v1 
बेशक

आप किसी दूरस्थ वेब सर्वर पर डोकर छवि का उपयोग करना चाहते हैं, आप इसे Docker Hub या एक निजी डॉकर रिपोजिटरी पर धक्का देने की आवश्यकता है और इसे चलाने से पहले अपने सर्वर पर खींचने के लिए docker pull का उपयोग करें।

+0

डॉकर बंडल कुछ ऐसा नहीं था जो दिमाग में आया, लेकिन मुझे यह पसंद है! –

संबंधित मुद्दे