सरलीकरण में Vaadin
Book Of Vaadin की किताब एक उदाहरण Vaadin Charts का उपयोग भी शामिल पुश पर एक अध्याय शामिल हैं।
नीचे मेरा कोड है। ऊपर वर्णित उस वैदिन चार्ट्स उदाहरण के आधार पर, मैंने Chart
ऑब्जेक्ट के उपयोग को एक सरल Label
ऑब्जेक्ट के साथ बदलकर इसे सरल बना दिया। लेबल आपको वर्तमान समय बताने के लिए हर सेकेंड या तो अपडेट करता है।
के लिए उदाहरण उपयोग केवल -
चेतावनी वास्तविक दुनिया परियोजना में एक निर्वाहक का उपयोग करें: नीचे दी गई मेरी उदाहरण सादगी के लिए बनाया गया है, उत्पादन कोड के रूप में नहीं। एक थ्रेड सोना अनुसूचित थ्रेड किए गए काम को प्रबंधित करने के लिए एक कच्चा और अजीब तरीका है। जावा इस तरह के काम के लिए Executor
सुविधा प्रदान करता है। एक वास्तविक दुनिया परियोजना में मैं अपने कार्य (समय बताने) को निर्धारित करने के लिए एक नींद Thread
ऑब्जेक्ट की बजाय ScheduledExecutorService का उपयोग करूंगा। संबंधित युक्ति: सर्वलेट वातावरण में Timer
का कभी भी उपयोग न करें। एक पूर्ण और अधिक वास्तविक दुनिया के उदाहरण के लिए, वाडिन के साथ पुश के बारे में एक समान प्रश्न के लिए my Answer देखें। UI
पर Label
विजेट सीधे मैं जगह जबकि वास्तविक दुनिया काम एक Layout
का प्रयोग करेंगे Label
को रोकने के लिए:
मैं जैसे इस उदाहरण में अन्य शॉर्टकट, ले लिया।
मेरी विन्यास
मेरे कोड NetBeans 8.0.2 और पर मैक ओएस एक्स 10.8.5 बिलाव 8.0.15 (माउंटेन शेर) में Vaadin 7.3.7 उपयोग कर रहा है जावा 8 अद्यतन 25 के साथ।
पुश प्रौद्योगिकी अपेक्षाकृत नई है, खासकर WebSocket विविधता। ऐसे कैसे इस उदाहरण
इस कोड को एक एकल फाइल है, MyUI.java
फ़ाइल का उपयोग करने के 8.
बिलाव 7 के हाल के अपडेट के रूप में या अपने वेब सर्वर, के हाल के संस्करणों का उपयोग सुनिश्चित करें। इस कोड का उपयोग करने के लिए:
- अपनी पसंद के आईडीई में एक नया डिफ़ॉल्ट वैडिन ऐप बनाएं।
- संशोधित करने से पहले उस उदाहरण को सफलतापूर्वक चलाएं।
- नीचे दिए गए कोड के साथ
MyUI
कक्षा की सामग्री को बदलें।
@Push
एनोटेशन
बीच में कोड के अलावा, ध्यान दें कि किस प्रकार हम MyUI
वर्ग परिभाषा के @Push
एनोटेशन गयी।
उदाहरण कोड
package com.example.pushvaadinapp;
import com.vaadin.annotations.Push;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.annotations.Widgetset;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
import javax.servlet.annotation.WebServlet;
/**
* © 2014 Basil Bourque. This source code may be used freely forever by anyone absolving me of any and all responsibility.
*
* +----------------------------+
* | NOT FOR PRODUCTION USE! |
* +----------------------------+
* Sleeping threads is an awkward way to manage scheduled background work.
* By the way, never use a 'Timer' in a Servlet environment.
* Use an Executor instead, probably a ScheduledExecutorService.
*/
@Push
@Theme ("mytheme")
@Widgetset ("com.example.pushvaadinapp.MyAppWidgetset")
public class MyUI extends UI
{
Label label = new Label("Now : ");
@Override
protected void init (VaadinRequest vaadinRequest)
{
// Put a widget on this UI. In real work we would use a Layout.
setContent(this.label);
// Start the data feed thread
new FeederThread().start();
}
@WebServlet (urlPatterns = "/*" , name = "MyUIServlet" , asyncSupported = true)
@VaadinServletConfiguration (ui = MyUI.class , productionMode = false)
public static class MyUIServlet extends VaadinServlet
{
}
public void tellTime()
{
label.setValue("Now : " + new java.util.Date()); // If Java 8, use: Instant.now(). Or, in Joda-Time: DateTime.now().
}
class FeederThread extends Thread
{
int count = 0;
@Override
public void run()
{
try {
// Update the data for a while
while (count < 100) {
Thread.sleep(1000);
// Calling special 'access' method on UI object, for inter-thread communication.
access(new Runnable()
{
@Override
public void run()
{
count ++;
tellTime();
}
});
}
// Inform that we have stopped running
// Calling special 'access' method on UI object, for inter-thread communication.
access(new Runnable()
{
@Override
public void run()
{
label.setValue("Done.");
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
स्रोत
2015-01-06 22:37:05
प्रिय डाउन-मतदाता: कृपया अपने वोट के साथ आलोचना छोड़ दें। –