⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmiserviceimpl.java

📁 这个事关于jxta编程的入门级代码
💻 JAVA
字号:
import java.rmi.*;import java.rmi.server.*;import java.io.*;import net.jxta.peergroup.PeerGroup;import net.jxta.peergroup.PeerGroupFactory;import net.jxta.exception.PeerGroupException;import net.jxta.document.Advertisement;import net.jxta.document.AdvertisementFactory;import net.jxta.document.StructuredTextDocument;import net.jxta.document.StructuredDocumentFactory;import net.jxta.document.Element;import net.jxta.document.MimeMediaType;import net.jxta.discovery.DiscoveryService;import net.jxta.protocol.ModuleImplAdvertisement;import net.jxta.protocol.ModuleClassAdvertisement;import net.jxta.protocol.ModuleSpecAdvertisement;import net.jxta.platform.ModuleClassID;import net.jxta.id.IDFactory;import jxta.security.util.URLBase64;public class RMIServiceImpl implements RMIService {    PeerGroup netpg;    String stub;    public RMIServiceImpl() throws RemoteException { }    public void init() throws Exception {        try {            //Discover and join (or start) the default peergroup            netpg = PeerGroupFactory.newNetPeerGroup();        } catch (PeerGroupException e) {            //Couldn't initialize; can't continue            System.out.println("Fatal error : creating the NetPeerGroup");            System.exit(1);        }        makeStub();        publishAdv();    }    // The stub is how RMI clients call RMI servers. RMI clients normally    // get the stub from the lookup service via object serialization; in    // this example, they'll get the stub from the module service    // advertisement. Note that the serialized object is encoded as an    // ASCII string so that it can be transmitted through a variety    // of networks.    private void makeStub() throws IOException {        ByteArrayOutputStream baos = new ByteArrayOutputStream();        ObjectOutputStream oos = new ObjectOutputStream(baos);        oos.writeObject(UnicastRemoteObject.exportObject(this));        oos.close();        stub = new String(URLBase64.encode(baos.toByteArray()));    }    public String sayHello() {        return "Hello";    }    // Publish the advertisement. There's no point in caching this    // advertisement because the RMI stub is invalid between runs. So we    // always have to publish a new advertisement.    public boolean publishAdv() {        try {            DiscoveryService disco = netpg.getDiscoveryService();            ModuleClassAdvertisement mca = (ModuleClassAdvertisement)                AdvertisementFactory.newAdvertisement(                ModuleClassAdvertisement.getAdvertisementType());            mca.setName("JXTAMOD:RMIService:HelloService");            mca.setDescription("Sample RMI-as-JXTA Service");            ModuleClassID mcID = IDFactory.newModuleClassID();            mca.setModuleClassID(mcID);            disco.publish(mca, DiscoveryService.ADV);            disco.remotePublish(mca, DiscoveryService.ADV);            ModuleSpecAdvertisement msa = (ModuleSpecAdvertisement)                AdvertisementFactory.newAdvertisement(                ModuleSpecAdvertisement.getAdvertisementType());            msa.setName("JXTASPEC:RMIService:HelloService");            msa.setVersion("Version 1.0");            msa.setCreator("sun.com");            msa.setSpecURI("http://www.jxta.org/tutorial/RMIService.jar");            msa.setModuleSpecID(IDFactory.newModuleSpecID(mcID));            StructuredTextDocument doc = (StructuredTextDocument)                StructuredDocumentFactory.newStructuredDocument(                new MimeMediaType("text/xml"), "Parm");            Element e = doc.createElement("Stub", stub);            doc.appendChild(e);            msa.setParam(doc);            disco.publish(msa, DiscoveryService.ADV);            disco.remotePublish(msa, DiscoveryService.ADV);            System.out.println("Created the RMI advertisement");        } catch (Exception e) {            System.out.println(e);            e.printStackTrace();            return false;        }        return true;    }    public static void main(String[] args) throws Exception {        RMIServiceImpl rsi = new RMIServiceImpl();        rsi.init();        System.out.println("RMIService waiting for requests...");        // If we exit, rsi becomes eligible for GC, which means        // it could no longer handle requests        synchronized(rsi) {            rsi.wait();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -