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

📄 snmpmanager.java

📁 this is example use EJB with jboss.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		} catch (Exception e) {
			LogWriter.getSNMPLogger().error(e.toString());
		}
	}

	/***
	 * Read response data from AWG-NE
	 * 
	 * @param type
	 * @param requestID
	 * @param snmpVO
	 * @param isSetSlot
	 * @return SnmpVO
	 */
	public SnmpVO readResponse(int type, int requestID,
			SnmpVO snmpVO, boolean isSetSlot) {

		if (snmpVO == null) {
			return null;
		}

		ResultVO resultDataVO = null;

		try {
			int TOTAL_MAX_WAIT = this.retries * this.timeout;
			int totalTimeReadResponse = 0;
			boolean isOK = false;

			do {
				for (int j = 0; j < this.retries; j++) {
					if (dataVOHelper == null) {
						resultDataVO = null;
					} else {
						resultDataVO = dataVOHelper.searchRequestID(requestID);
					}

					if (resultDataVO != null) {
						isOK = true;
						break;
					} else {
						isOK = false;
						try {
							totalTimeReadResponse += STEP_WAIT;
							Thread.sleep(STEP_WAIT);
						} catch (InterruptedException e) {
						}
					}
				}
				if (isOK) {
					break;
				}
			} while (totalTimeReadResponse < TOTAL_MAX_WAIT);

		} catch (Exception e) {
			LogWriter.getSNMPLogger().error(e.toString());		
			if (LogWriter.getSNMPLogger().isTraceEnabled()) {
				LogWriter.getSNMPLogger().trace(Utils.parseException(e));
			}

			snmpVO.setError(true);
			snmpVO.setErrorMessage(e.toString());
			return snmpVO;
		}

		if (resultDataVO == null) {
			// Return requested snmpVO
			snmpVO.setError(true);
			snmpVO.setErrorMessage("SNMP Time Out");
			return snmpVO;
		}

		if (type == Constants.SNMP_GET) {
			snmpVO.setOidGet(resultDataVO.getOid());
			snmpVO.setValueGet(resultDataVO.getValue());
			if (resultDataVO.getIsError()) {
				snmpVO.setError(true);
				snmpVO.setErrorMessage(resultDataVO.getErrorMessage());
			} else {
				snmpVO.setError(false);
			}
		} else {
			if (isSetSlot) {
				if (resultDataVO.getIsError()) {
					snmpVO.setError(true);
					snmpVO.setErrorMessage(resultDataVO.getErrorMessage());
				} else {
					snmpVO.setError(false);
				}
			} else {
				snmpVO.setOidSetSet(resultDataVO.getOid());
				snmpVO.setValueSetSet(resultDataVO.getValue());
				if (resultDataVO.getIsError()) {
					snmpVO.setError(true);
					snmpVO.setErrorMessage(resultDataVO.getErrorMessage());
				} else {
					snmpVO.setError(false);
				}
			}
		}

		return snmpVO;
	}

	/**
	 * Read response data from AWG-NE
	 * 
	 * @param response
	 * @param type
	 * @param snmpVO
	 * @param isSetSlot
	 * @return SnmpVO
	 */
	public SnmpVO readResponse(PDU response, int type,
			SnmpVO snmpVO, boolean isSetSlot) throws Exception {

		if (response == null) {
			LogWriter.getSNMPLogger().error("Cannot get response from AWG-NE with IP: " + snmpVO.getAwgNeIP());
			snmpVO.setError(true);
			snmpVO.setErrorMessage("Cannot get response from AWG-NE with IP: " + snmpVO.getAwgNeIP());
			return snmpVO;
		} else {
			if ((response.getErrorIndex() == PDU.noError)
					&& (response.getErrorStatus() == PDU.noError)) {
				int len = response.size();
				for (int i = 0; i < len; i++) {
					VariableBinding recVB = response.get(i);
					if (recVB != null) {
						if (type == Constants.SNMP_GET) {
							snmpVO.setOidGet("" + recVB.getOid());
							snmpVO.setValueGet("" + recVB.getVariable());
						} else {
							if (!isSetSlot) {								
								snmpVO.setOidSetSet("" + recVB.getOid());
								snmpVO.setValueSetSet("" + recVB.getVariable());
							}
						}
					}
				}
				return snmpVO;
			} else {
				LogWriter.getSNMPLogger().error("Cannot get response from AWG-NE with IP: "
								+ snmpVO.getAwgNeIP() + " .Error: " + response.getErrorStatusText());
				snmpVO.setError(true);
				snmpVO.setErrorMessage("Cannot get response from AWG-NE with IP: "
								+ snmpVO.getAwgNeIP() + " .Error: " + response.getErrorStatusText());
				return snmpVO;
			}
		}

	}

	/***
	 * Set response SNMP Command into ResultVO Object
	 * 
	 * @param event
	 * @param isTimeOut
	 * @throws Exception
	 */
	private void setResult(ResponseEvent event, boolean isTimeOut)
			throws Exception {

		PDU pdu = null;

		if (isTimeOut) {
			pdu = event.getRequest();
		} else {
			pdu = event.getResponse();
		}

		if (pdu != null) {
			ResultVO resultVO = new ResultVO();
			int len = pdu.size();

			for (int i = 0; i < len; i++) {

				VariableBinding recVB = pdu.get(i);

				if (recVB != null) {

					resultVO.setOid("" + recVB.getOid());

					if (isTimeOut) {
						resultVO.setRequestID(event.getRequest().getRequestID()
								.getValue());
						resultVO.setValue("NULL");
						resultVO.setIsError(true);
						resultVO.setErrorMessage("Request on Server: " + event.getRequest() + " timed out");
						LogWriter.getSNMPLogger().warn("Request " + event.getRequest() + " timed out");
					} else {
						resultVO.setRequestID(event.getRequest().getRequestID().getValue());
						resultVO.setValue("" + recVB.getVariable());
						resultVO.setResponseID(event.getResponse().getRequestID().getValue());

						if (event.getError() != null) {
							resultVO.setIsError(true);
							resultVO.setErrorMessage("Error:" + event.getError());
							LogWriter.getSNMPLogger().error("Error: " + event.getError());
						} else {
							resultVO.setIsError(false);
						}
						LogWriter.getSNMPLogger().info("Received response " + event.getResponse()
										+ " on request " + event.getRequest());
					}

					if (dataVOHelper == null) {
						dataVOHelper = new ResultVOHelper();
					}

					synchronized (dataVOHelper) {
						dataVOHelper.addDataVO(resultVO);
					}
				}
			}
		}
	}

	/***
	 * Get address
	 * 
	 * @param transportAddress
	 * @return
	 */
	private static String getAddressUDP(String transportAddress) {
		String transport = "udp:";
		int colon = transportAddress.indexOf(transport);

		if (colon < 0) {
			transportAddress = transport + transportAddress;
		}
		// set default port
		colon = transportAddress.indexOf('/');
		if (colon < 0) {
			transportAddress += "/161";
		}		
		return transportAddress;
	}	

	/**
	 * Free memory
	 */
	public void destroy() {
		try {
			try{
				if (trapPublisher != null) {
					trapPublisher.doDisconnect();
				}
			}catch (Exception e){}			
			trapPublisher = null;
			
			
			try{
				if (snmpManager != null) {
					snmpManager.close();
				}
			}catch (Exception e){}	
			snmpManager = null;			
			
			try{
				if (snmpTrap != null) {
					snmpTrap.close();
				}
			}catch (Exception e){}	
			snmpTrap = null;			
						
			try{
				if (dataVOHelper != null) {
					dataVOHelper.deleteAll();
				}
			}catch (Exception e){}
			dataVOHelper = null;

			try{
				if (dbFunctionManager != null) {
					DBFunctionsManager.closeAllConnection();
				}
			}catch (Exception e){}
			dbFunctionManager = null;
			
			try{
				if (trapThreadPool != null){
					trapThreadPool.stop();
				}
				trapThreadPool = null;
			}catch (Exception e){
			}
			
			try{
				if (snmpTrap != null){
					snmpTrap.close();
				}
			}catch (Exception e){
			}			
			snmpTrap = null;						
			
			super.finalize();
			System.gc();
		} catch (Throwable e) {			
			snmpManager = null;
			trapPublisher = null;
			dataVOHelper = null;
			dbFunctionManager = null;
			trapThreadPool = null;
			LogWriter.getSNMPLogger().error(e.toString());
		}
	}
	
	/**
	 * Save Object into database
	 * 
	 * @param objectVO
	 *            : is TrapVO or OperationVO
	 */
	private void saveObject2Database(Object objectVO) {
		try {
			LogWriter.getSNMPLogger().debug("Save Object data into DB: " + objectVO.toString());
			
			if (dbFunctionManager == null) {
				SnmpManager.dbFunctionManager = new DBFunctionsManager();
				LogWriter.getSNMPLogger().debug("Created Database Manager Object");
			}			
			if ((dbFunctionManager.open().isSucceeded()) && (objectVO != null)) {				
				JResult ret = dbFunctionManager.addObject2DB(objectVO);
				if (ret.isFailed()) {
					LogWriter.getSNMPLogger().error(ret.getMessage());
					LogWriter.getSNMPLogger().error("Cannot insert Object into database");
				}else{
					LogWriter.getSNMPLogger().info("insert Object into database is success");
				}
				dbFunctionManager.close();
			} else {
				LogWriter.getSNMPLogger().error("Failed to get connection. Cannot save Trap history or Operation history into database");				
			}
		} catch (Exception e) {
			LogWriter.getSNMPLogger().error(e.toString());
			if(LogWriter.getSNMPLogger().isDebugEnabled()){
				LogWriter.getSNMPLogger().debug(Utils.parseException(e));
			}
		}
	}
	
	/**
	 * Get PDU Type
	 * 
	 * @return pduType
	 */
	public int getPduType() {
		return this.pduType;
	}

	/**
	 * Set Pdu Type
	 * 
	 * @param pduType
	 */
	public void setPduType(int pduType) {
		this.pduType = pduType;
	}

	/**
	 * Get Retries
	 * 
	 * @return retries
	 */
	public int getRetries() {
		return retries;
	}

	/**
	 * Set Retries
	 * 
	 * @param retries
	 */
	public void setRetries(int retries) {
		this.retries = retries;
	}

	/**
	 * Get Time Out
	 * 
	 * @return timeout
	 */
	public int getTimeout() {
		return timeout;
	}

	/**
	 * Set Time Out
	 * 
	 * @param timeout
	 */
	public void setTimeout(int timeout) {
		this.timeout = timeout;
	}
	
	/**
	 * Set IP Address
	 * 
	 * @param ipAddress
	 */
	public void setIPAddress(String ipAddress){
		this.ipAddress = ipAddress;
	}
	
	/**
	 * Get IP Address
	 * 
	 * @return ipAddress
	 */
	public String getIPAddress(){
		return this.ipAddress;
	}
}

⌨️ 快捷键说明

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