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

📄 jmx.java

📁 使用smslib和GSP modem 发送和接收手机短息
💻 JAVA
字号:
// SMSLib for Java v3// A Java API library for sending and receiving SMS via a GSM modem// or other supported gateways.// Web Site: http://www.smslib.org//// Copyright (C) 2002-2008, Thanasis Delenikas, Athens/GREECE.// SMSLib is distributed under the terms of the Apache License version 2.0//// Licensed 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.smslib.smsserver.interfaces;import java.lang.management.ManagementFactory;import java.rmi.registry.LocateRegistry;import java.util.List;import java.util.Properties;import java.util.Vector;import javax.management.MBeanServer;import javax.management.ObjectName;import javax.management.remote.JMXConnectorServer;import javax.management.remote.JMXConnectorServerFactory;import javax.management.remote.JMXServiceURL;import org.smslib.OutboundMessage;import org.smslib.Service;import org.smslib.smsserver.AGateway;import org.smslib.smsserver.AInterface;import org.smslib.smsserver.InterfaceTypes;import org.smslib.smsserver.SMSServer;/** * This interface uses JMX for inbound/outbound communication. <br /> * The other end of the jmx communication can add new outbound messages and ask * for inbound messages. Additional, there are some statistic methods for * service inspection. *  * @author Sebastian Just */public class Jmx extends AInterface{	/** Interface for JMX connection */	public interface SMSServerMethodsMBean	{		/**		 * Spools the given message and sends it on the next run.		 * 		 * @param msg		 *            The message to send		 */		public void addOutboundMessage(OutboundMessage msg);		/**		 * Sppols the given messages and send them on the next run.		 * 		 * @param msgs		 *            The messgaes to send		 */		public void addOutboundMessage(List msgs);		/**		 * Get all inbound messages since the last call of this method. <br />		 * The inbound message spool is deleted after this call!		 * 		 * @return All new inbound messages		 */		public List getInboundMessages();		/**		 * Get all marked outbound messages since the last call of this method.		 * <br />		 * The message spool is deleted after this call!		 * 		 * @return List of outbound messaages		 */		public List getMarkedOutboundMessages();		/**		 * Returns the gateway queue load.		 * 		 * @see Service#getGatewayQueueLoad()		 * @return The number of pending messages to be send.		 */		public int getGatewayQueueLoad();		/**		 * Returns the inbound message count.		 * 		 * @see Service#getInboundMessageCount()		 * @return The number of received messages.		 */		public int getInboundMessageCount();		/**		 * Returns the outbound message count.		 * 		 * @see Service#getOutboundMessageCount()		 * @return The number of sent messages.		 */		public int getOutboundMessageCount();	}	/** Logic for JMX */	public class SMSServerMethods implements SMSServerMethodsMBean	{		/* (non-Javadoc)		 * @see org.smslib.smsserver.interfaces.Jmx.SMSServerMethodsMBean#addOutboundMessage(org.smslib.OutboundMessage)		 */		public void addOutboundMessage(OutboundMessage msg)		{			synchronized (outboundMessages)			{				outboundMessages.add(msg);			}		}		/* (non-Javadoc)		 * @see org.smslib.smsserver.interfaces.Jmx.SMSServerMethodsMBean#addOutboundMessage(java.util.List)		 */		public void addOutboundMessage(List msgs)		{			synchronized (outboundMessages)			{				outboundMessages.addAll(msgs);			}		}		/* (non-Javadoc)		 * @see org.smslib.smsserver.interfaces.Jmx.SMSServerMethodsMBean#getInboundMessages()		 */		public List getInboundMessages()		{			synchronized (inboundMessages)			{				List retValue = new Vector();				retValue.addAll(inboundMessages);				inboundMessages.clear();				return retValue;			}		}		/* (non-Javadoc)		 * @see org.smslib.smsserver.interfaces.Jmx.SMSServerMethodsMBean#getMarkedOutboundMessages()		 */		public List getMarkedOutboundMessages()		{			synchronized (markedOutboundMessages)			{				List retValue = new Vector();				retValue.addAll(markedOutboundMessages);				markedOutboundMessages.clear();				return retValue;			}		}		/* (non-Javadoc)		 * @see org.smslib.smsserver.interfaces.Jmx.SMSServerMethodsMBean#getGatewayQueueLoad()		 */		public int getGatewayQueueLoad()		{			return server.srv.getGatewayQueueLoad();		}		/* (non-Javadoc)		 * @see org.smslib.smsserver.interfaces.Jmx.SMSServerMethodsMBean#getInboundMessageCount()		 */		public int getInboundMessageCount()		{			return server.srv.getInboundMessageCount();		}		/* (non-Javadoc)		 * @see org.smslib.smsserver.interfaces.Jmx.SMSServerMethodsMBean#getOutboundMessageCount()		 */		public int getOutboundMessageCount()		{			return server.srv.getOutboundMessageCount();		}	}	/** Local JMX server */	private MBeanServer mbs;	/** JMX endpoint */	private SMSServerMethods ssm;	/** Glue between JMX and the managed bean */	private ObjectName obn;	/** Outbound message spool */	private List outboundMessages;	/** Inbound message spool */	private List inboundMessages;	/** Spool for marked outbound messages */	private List markedOutboundMessages;	/**	 * Creates this interface and initalize the message spools.	 * 	 * @see AGateway#AGateway(String, Properties, SMSServer)	 */	public Jmx(String infId, Properties props, SMSServer server, InterfaceTypes type)	{		super(infId, props, server, type);		description = "JMX based interface.";		ssm = new SMSServerMethods();		outboundMessages = new Vector();		inboundMessages = new Vector();		markedOutboundMessages = new Vector();	}	public void CallReceived(String gtwId, String callerId)	{		// This interface does not handle inbound calls.	}	/* (non-Javadoc)	 * @see org.smslib.smsserver.AInterface#MessagesReceived(java.util.List)	 */	public void MessagesReceived(List msgList) throws Exception	{		synchronized (inboundMessages)		{			inboundMessages.addAll(msgList);		}	}	/* (non-Javadoc)	 * @see org.smslib.smsserver.AInterface#getMessagesToSend()	 */	public List getMessagesToSend() throws Exception	{		synchronized (outboundMessages)		{			List retValue = new Vector();			retValue.addAll(outboundMessages);			outboundMessages.clear();			return retValue;		}	}	/* (non-Javadoc)	 * @see org.smslib.smsserver.AInterface#markMessage(org.smslib.OutboundMessage)	 */	public void markMessage(OutboundMessage msg) throws Exception	{		synchronized (markedOutboundMessages)		{			markedOutboundMessages.add(msg);		}	}	/* (non-Javadoc)	 * @see org.smslib.smsserver.AInterface#start()	 */	public void start() throws Exception	{		LocateRegistry.createRegistry(Integer.parseInt(getProperty("registry_port")));		// Get the platform MBeanServer		mbs = ManagementFactory.getPlatformMBeanServer();		JMXServiceURL url = new JMXServiceURL(getProperty("url"));		JMXConnectorServer connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);		connectorServer.start();		obn = new ObjectName(getProperty("object_name"));		// Uniquely identify the MBeans and register them with the platform		mbs.registerMBean(ssm, obn);		server.srv.getLogger().info("Bound JMX to " + url);	}	/* (non-Javadoc)	 * @see org.smslib.smsserver.AInterface#stop()	 */	public void stop() throws Exception	{		if (mbs != null)		{			mbs.unregisterMBean(obn);		}	}}

⌨️ 快捷键说明

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