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

📄 rmitransportserverimpl.java

📁 bpel执行引擎用来执行bpel业务流程
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements.  See the NOTICE file * distributed with this work for additional information * regarding copyright ownership.  The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License.  You may obtain a copy of the License at * *    http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied.  See the License for the * specific language governing permissions and limitations * under the License. */package org.apache.ode.jca.server.rmi;import java.rmi.Remote;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;import java.rmi.server.UnicastRemoteObject;import java.util.ArrayList;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.ode.jca.server.ConnectionProvider;import org.apache.ode.ra.transports.rmi.OdeRemote;import org.apache.ode.ra.transports.rmi.OdeTransportPipeRemote;/** * Server-side of the RMI transport. Manages a collection of communication * "pipes", each represented by its own remote object. */public class RmiTransportServerImpl implements OdeRemote {    private static final Log __log = LogFactory.getLog(RmiTransportServerImpl.class);    private List<RmiPipeServerImpl> _pipes = new ArrayList<RmiPipeServerImpl>();    private int _port = 1099;    private Remote _remote;    private ConnectionProvider _connProvider;    private String _id;    public RmiTransportServerImpl() {    }    public void setId(String id) {        _id = id;    }    public void setConnectionProvider(ConnectionProvider connprovider) {        _connProvider = connprovider;        ;    }    public void setPort(int port) {        _port = port;    }    public int getPort() {        return _port;    }    public synchronized void start() throws RemoteException {        if (_id == null)            throw new IllegalStateException("Must set id!");        if (_connProvider == null)            throw new IllegalStateException("Must set connection provider.");        _remote = UnicastRemoteObject.exportObject(this, 0);        // Bind the RMI-server to the registry, creating one if necessary        try {            LocateRegistry.createRegistry(_port);            __log.debug("Created registry on port " + _port);        } catch (Exception ex) {            __log.debug("Could not create registry on port " + _port + " (perhaps it's already there)");            /* ignore */        }        Registry registry = LocateRegistry.getRegistry(_port);                registry.rebind(_id, _remote);                __log.debug("Bound JCA server as \"" + _id + "\" on registry port " + _port);    }    public synchronized void stop() throws RemoteException {        UnicastRemoteObject.unexportObject(this, false);    }    public synchronized OdeTransportPipeRemote newPipe() throws RemoteException {        RmiPipeServerImpl pipe = new RmiPipeServerImpl(this, _connProvider.createConnectionObject(), _connProvider                .getConnectionIntefaces());        OdeTransportPipeRemote remote = (OdeTransportPipeRemote) UnicastRemoteObject.exportObject(pipe, 0);        pipe.remote = remote;        _pipes.add(pipe);        return remote;    }    void pipeClosed(RmiPipeServerImpl pipe) {        if (__log.isDebugEnabled())            __log.debug("Closing RMI pipe " + pipe);                    try {            UnicastRemoteObject.unexportObject(pipe.remote, false);        } catch (RemoteException re) {            // ignore        }        synchronized (this) {            _pipes.remove(pipe);        }        _connProvider.destroyConnectionObject(pipe.target);    }}

⌨️ 快捷键说明

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