यहां परीक्षण कोड है जिसे मैंने कभी-कभी लिखा है और हमारे क्लाइंट को डेटा भेजने का परीक्षण करने के लिए उपयोग किया है। यह एक एडेप्टर कार्यान्वयन का एक संक्षिप्त, नंगे हड्डियों जावा उदाहरण है। यह वेब पर मौजूदा उदाहरणों से बहुत अनावश्यक कोड हटा देता है। यह संकलित करता है, काम करता है और मैं अक्सर परीक्षण में इसका उपयोग करता हूं।
package your.package.structure.adapter;
import your.package.structure.device.DevicePort;
import flex.messaging.messages.AsyncMessage;
import flex.messaging.messages.Message;
import flex.messaging.services.MessageService;
import flex.messaging.services.ServiceAdapter;
import flex.messaging.util.UUIDUtils;
/**
* Test service adapter. Great for testing when you want to JUST SEND AN OBJECT and nothing
* else. This class has to stay in the main codebase (instead of test) because, when it's used
* it needs to be deployed to Tomcat.
* @author Kevin G
*
*/
public class TestServiceAdapter extends ServiceAdapter {
private volatile boolean running;
private Message createTestMessage() {
DevicePort objectToSend = new DevicePort("RouterDevice");
final AsyncMessage msg = new AsyncMessage();
msg.setDestination(getClass().getSimpleName() + "Destination");
msg.setClientId(UUIDUtils.createUUID());
msg.setMessageId(UUIDUtils.createUUID());
msg.setBody(objectToSend);
return msg;
}
private void sendMessageToClients(Message msg) {
((MessageService) getDestination().getService()).pushMessageToClients(msg, false);
}
/**
* @see flex.messaging.services.ServiceAdapter#start()
*/
@Override
public void start(){
super.start();
Thread messageSender = new Thread(){
public void run(){
running = true;
while(running){
sendMessageToClients(createTestMessage());
secondsToSleep(3);
}
}
};
messageSender.start();
}
/**
* @see flex.messaging.services.ServiceAdapter#stop()
*/
@Override
public void stop(){
super.stop();
running = false;
}
/**
* This method is called when a producer sends a message to the destination. Currently,
* we don't care when that happens.
*/
@Override
public Object invoke(Message message) {
if (message.getBody().equals("stop")) {
running = false;
}
return null;
}
private void secondsToSleep(int seconds) {
try{
Thread.sleep(seconds * 1000);
}catch(InterruptedException e){
System.out.println("TestServiceAdapter Interrupted while sending messages");
e.printStackTrace();
}
}
}
आपको इसे काम करने के लिए टोमकैट में कुछ गुण सेट करने की आवश्यकता है।
<destination id="TestServiceAdapterDestination">
<channels>
<channel ref="my-streaming-amf"/>
</channels>
<adapter ref="TestServiceAdapter"/>
</destination>
:
<adapter-definition id="TestServiceAdapter" class="your.package.structure.adapter.TestServiceAdapter"/>
है कि एक ही messaging-config.xml
फ़ाइल को यह गंतव्य जोड़ें:
मौजूदा <adapters>
टैग में यह पंक्ति जोड़ दें:
messaging-config.xml
में, आप एक एडाप्टर और गंतव्य जोड़ने की जरूरत
अंत में, सुनिश्चित करें कि "मेरा-स्ट्रीमिंग-एएमएफ" चैनल services-config.xml
में परिभाषित किया गया है, जैसा कि:
<channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
<properties>
<!-- you don't need to set all these properties, this is just what we set, included for illustration, only -->
<idle-timeout-minutes>0</idle-timeout-minutes>
<max-streaming-clients>10</max-streaming-clients>
<server-to-client-heartbeat-millis>5000</server-to-client-heartbeat-millis>
<user-agent-settings>
<user-agent match-on="Safari" kickstart-bytes="2048" max-streaming-connections-per-session="10"/>
<user-agent match-on="MSIE" kickstart-bytes="2048" max-streaming-connections-per-session="15"/>
<user-agent match-on="Firefox" kickstart-bytes="2048" max-streaming-connections-per-session="10"/>
</user-agent-settings>
</properties>
</channel-definition>
ध्यान दें कि BlazeDS में, इन दो config फ़ाइलें (मैसेजिंग-config.xml और सेवाओं-config.xml) निम्न निर्देशिका में स्थित हैं:
/blazeds/tomcat/webapps/[nameOfYourApp]/WEB-INF/flex/
जहां [nameOfYourApp]
निर्देशिका अपने webapp है में रहता है
मुझे उम्मीद है कि इससे मदद मिलती है!
-kg
सलाह का टुकड़ा, किसी को इसे देखने और व्याकरण को सही करने के लिए प्राप्त करें। पालन करना बहुत मुश्किल है। – cwallenpoole