java實現監控
㈠ java怎麼實現列印機監控
實現目標:
1、可以測試列印機是否連接
2、監控列印機的狀態:列印機缺紙、列印機卡紙
我從PrintService里獲取PrinterStateReasons,可是總是為空。不知道怎麼才能獲取到列印機的PrinterStateReasons
Java代碼
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.PrintServiceAttributeSet;
import javax.print.attribute.standard.MediaPrintableArea;
import javax.print.attribute.standard.PrinterStateReasons;
import javax.print.event.PrintJobEvent;
import javax.print.event.PrintJobListener;
import javax.print.event.PrintServiceAttributeEvent;
import javax.print.event.PrintServiceAttributeListener;
import com.insigma.afc.common.LogHelper;
public class TextPrinter implements Printable {
private static final LogHelper s_log = new LogHelper(TextPrinter.class);
// 半形下的中文字元
public static final short HALF_CHINESE = 0;
// 半形下的英文字元
public static final short HALF_ENGLISH = 1;
protected String text;
protected String seperator;
public TextPrinter() {
}
public void print(String text, String seperator) {
this.text = text;
this.seperator = seperator;
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new MediaPrintableArea(20, 20, 700, 700, MediaPrintableArea.MM));
PrintService services = PrintServiceLookup.lookupDefaultPrintService();
if (services != null) {
DocPrintJob pj = services.createPrintJob();
services.(new PrintServiceAttributeListener() {
public void attributeUpdate(PrintServiceAttributeEvent psae) {
PrintServiceAttributeSet attribute = psae.getAttributes();
}
});
pj.addPrintJobListener(new PrintJobListener() {
public void printDataTransferCompleted(PrintJobEvent pje) {
s_log.info("111111111111 " + pje.getPrintEventType());
}
public void printJobCanceled(PrintJobEvent pje) {
s_log.info("22222222222222222 " + pje.getPrintEventType());
}
public void printJobCompleted(PrintJobEvent pje) {
s_log.info("33333333333333 " + pje.getPrintEventType());
}
public void printJobFailed(PrintJobEvent pje) {
s_log.info("444444444444444 " + pje.getPrintEventType());
}
public void printJobNoMoreEvents(PrintJobEvent pje) {
s_log.info("5555555555555555555 " + pje.getPrintEventType());
System.out.println("列印失敗:" + pje.JOB_FAILED);
System.out.println("沒有事件:" + pje.NO_MORE_EVENTS);
}
public void printJobRequiresAttention(PrintJobEvent pje) {
s_log.info("66666666666666666666 " + pje.getPrintEventType());
}
});
try {
Doc doc = new SimpleDoc(this, flavor, null);
pj.print(doc, aset);
PrinterStateReasons printerStateReasons = services
.getAttribute(PrinterStateReasons.class);
System.out.println("-----------" + printerStateReasons);
} catch (PrintException e) {
e.printStackTrace();
System.err.println(e);
}
} else {
s_log.info("未找到列印機。");
}
}
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex == 0) {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
g2d.setColor(Color.black);
String[] lines = text.split(seperator);
for (int i = 0; i < lines.length; i++) {
g2d.drawString(lines[i], 0, (i + 1) * 20);
}
return Printable.PAGE_EXISTS;
} else {
return Printable.NO_SUCH_PAGE;
}
}
/**
* 為中文字元對齊補空格(列印對齊時候用)
*
* @param content
* 需要補空格的字元
* @param expectLength
* 佔用的最大長度
* @param type
* 字元的類型:中文、英文
* @return
*/
public static String validChineseString(String content, int expectLength, short type) {
String resultString = content.trim();
String space = null;
switch (type) {
case HALF_CHINESE: {
space = " ";
break;
}
case HALF_ENGLISH: {
space = " ";
break;
}
default:
break;
}
int contentLength = content.length();
if (contentLength < expectLength) {
int different = expectLength - contentLength;
for (int i = 0; i < different; i++) {
resultString += space;
}
}
System.out.println(content + " " + resultString);
return resultString;
}
}
㈡ 怎樣採用java實現對系統進程的監控
http://blog.csdn.net/linzhanggeorge/article/details/4419801
SWT Win32 Extension 是Eclipse類庫SWT的Win32本地原生擴展.
本項目提供了一個軟體開發工具庫,能夠讓您使用Java語言開發原生的Windows應用程序而不需要編寫額外的JNI代碼。使用SWT Win32 Extension,您將不需要創建原生的動態鏈接庫來調用操作系統動態鏈接庫的系統API或者方法。您僅僅需要做的就是編寫Java代碼, SWT Win32 Extension來負責剩下的部分。SWT Win32 Extension提供了一系列的功能使您的應用程序看上去和Win32本機程序別無二致。
窗口裝飾功能:提供窗口置頂,透明,閃動等功能。
自定義窗口:創建不規則的窗口。
訪問Windows注冊表。
系統文件夾:獲取系統特殊文件加的路徑和圖標。
系統快捷方式:管理系統快捷方式。
系統相關信息:收集系統CPU,內存,環境變數等相關信息。
系統會話:提供關機,休眠,重啟,注銷等功能。
系統IO及網路功能:提供磁碟和網路相關信息。
活動桌面功能:管理Windows活動桌面。
系統鉤子:注冊和卸載系統鉤子,能夠攔截和處理系統事件。
窗口系統菜單:管理窗口菜單。用戶可以自定義系統菜單和處理菜單事件。
Ole 控制項:提供對一些常用控制項的封裝,比如flash。 值得一提的是,您能夠訪問SWT提供的所有功能,因為SWT Win32 Extension是從SWT派生出來的。
㈢ Java性能監控應該包含哪些內容常用工具有哪些,是怎麼實現的
當有問題出現時,許多開發人員可能會比較盲目的用這些工具來試探性定位問題,而大多數情況下,這種試探會無功而返。因為這些分析工具主要是側重Java單方面的分析,比如該系統調用第三方API,如果第三方API有問題,是無法監控到的。還有像文件、DB資源的訪問也是是無法監控到的。
除了JAVA自帶的監控工具外,我們嘗試了第三方的監控工具透視寶,功能相對全面,且易操作。
在功能方面,透視寶都包括:查看執行最慢的10個元素,包括元素執行次數、持續時長和佔用時長百分比;查看HTTP請求參數,包括請求的響應狀態、鏈接頁面、具體的請求參數及返回結果;查看代碼執行堆棧的詳細樹狀信息,包括每個方法的計算時間、總耗時和被調用的次數,您能直接看到特殊標識的最慢方法;查看涉及SQL語句的總耗時排序,包括SQL執行總耗時、執行次數和具體的查詢語句;第三方API調用。
㈣ 如何用java實現web伺服器的監控
Hyperic HQ集成了強大的監測和管理功能,它有開源版本,您可以直接使用它用來對web伺服器進行監控。
如果您想自己寫代碼實現,Hyperic HQ提供了一個伺服器各種性能指標採集的API,這個API包本身提供了各種平台(linux/MAC/window等)的兼容。
㈤ java 如何實現即時監控內存
在 \jdk1.6.0_10\demo\management\MemoryMonitor 下得示常式序,可以去學習哈
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.util.Date;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import java.lang.management.*;
import java.util.*;
public class MemoryMonitor extends JPanel {
static JCheckBox dateStampCB = new JCheckBox("Output Date Stamp");
public Surface surf;
JPanel controls;
boolean doControls;
JTextField tf;
// Get memory pools.
static java.util.List<MemoryPoolMXBean> mpools =
ManagementFactory.getMemoryPoolMXBeans();
// Total number of memory pools.
static int numPools = mpools.size();
public MemoryMonitor() {
setLayout(new BorderLayout());
setBorder(new TitledBorder(new EtchedBorder(), "Memory Monitor"));
add(surf = new Surface());
controls = new JPanel();
controls.setPreferredSize(new Dimension(135,80));
Font font = new Font("serif", Font.PLAIN, 10);
JLabel label = new JLabel("Sample Rate");
label.setFont(font);
label.setForeground(Color.red);
controls.add(label);
tf = new JTextField("1000");
tf.setPreferredSize(new Dimension(45,20));
controls.add(tf);
controls.add(label = new JLabel("ms"));
label.setFont(font);
label.setForeground(Color.red);
controls.add(dateStampCB);
dateStampCB.setFont(font);
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
removeAll();
if ((doControls = !doControls)) {
surf.stop();
add(controls);
} else {
try {
surf.sleepAmount = Long.parseLong(tf.getText().trim());
} catch (Exception ex) {}
surf.start();
add(surf);
}
validate();
repaint();
}
});
}
public class Surface extends JPanel implements Runnable {
public Thread thread;
public long sleepAmount = 1000;
public int usageHistCount = 20000;
private int w, h;
private BufferedImage bimg;
private Graphics2D big;
private Font font = new Font("Times New Roman", Font.PLAIN, 11);
private int columnInc;
private float usedMem[][];
private int ptNum[];
private int ascent, descent;
private Rectangle graphOutlineRect = new Rectangle();
private Rectangle2D mfRect = new Rectangle2D.Float();
private Rectangle2D muRect = new Rectangle2D.Float();
private Line2D graphLine = new Line2D.Float();
private Color graphColor = new Color(46, 139, 87);
private Color mfColor = new Color(0, 100, 0);
private String usedStr;
public Surface() {
setBackground(Color.black);
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (thread == null) start(); else stop();
}
後面還有很多代碼沒貼出來 自己到JDK 的demo目錄下查看吧
㈥ 怎麼用java實現web伺服器的監控
如何用Java實現Web伺服器 一、HTTP協議的作用原理
WWW是以Internet作為傳輸媒介的一個應用系統,WWW網上最基本的傳輸單位是Web網頁。WWW的工作基於客戶機/伺服器計算模型,由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成,兩者之間採用超文本傳送協議(HTTP)進行通信。HTTP協議是基於TCP/IP協議之上的協議,是Web瀏覽器和Web伺服器之間的應用層協議,是通用的、無狀態的、面向對象的協議。HTTP協議的作用原理包括四個步驟:
(1) 連接:Web瀏覽器與Web伺服器建立連接,打開一個稱為socket(套接字)的虛擬文件,此文件的建立標志著連接建立成功。
(2) 請求:Web瀏覽器通過socket向Web伺服器提交請求。HTTP的請求一般是GET或POST命令(POST用於FORM參數的傳遞)。GET命令的格式為:
GET 路徑/文件名 HTTP/1.0
文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本。
(3) 應答:Web瀏覽器提交請求後,通過HTTP協議傳送給Web伺服器。Web伺服器接到後,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面。詳細方法可向itjob老師了解
㈦ 怎麼使用Java來監控內存求具體實例代碼。
你好!
擴大一下web容器的內存。
你說的這個不太可能實現。下載的時候,已經將流發送給瀏覽器了,出現內存溢出,控制不了。
如果是創建
下載流時內存會猛增,看一下這部分代碼,
是不是對象創建太多了。
希望對你有所幫助,望採納。
㈧ java如何實現對集群的監控
用Open-falcon,Open-falcon是小米運維團隊從互聯網公司的需求出發,根據多年的運維經驗,結合SRE、SA、DEVS的使用經驗和反饋,開發的一套面向互聯網的企業級開源監控產品。
㈨ java 雙人游戲對鍵盤的監控如何實現
看代碼,題主應該是在用pygame,持續輸入我理解為按住某個鍵。因為沒有使用過pygame,我查了一下官方文檔,發現兩個method (function)是否滿足需求,沒有測試,不保證有效。
啟用設置
pygame.key.set_repeat() control how held keys are repeated
set_repeat() -> None
set_repeat(delay, interval) -> NoneWhen the keyboard repeat is enabled, keys that are held down will generate multiple pygame.KEYDOWN events. The delay is the number of milliseconds before the first repeated pygame.KEYDOWN will be sent. After that another pygame.KEYDOWN will be sent every interval milliseconds. If no arguments are passed the key repeat is disabled. When pygame is initialized the key repeat is disabled.
從上面介紹可以看出,pygame默認禁用了這個模式。需要自己設置兩次KEYDOWN事件的之間的時間,應該是越短越好。
獲取輸入
pygame.key.get_repeat() see how held keys are repeated
get_repeat() -> (delay, interval)When the keyboard repeat is enabled, keys that are held down will generate multiple pygame.KEYDOWN events. The delay is the number of milliseconds before the first repeated pygame.KEYDOWN will be sent. After that another pygame.KEYDOWN will be sent every interval milliseconds.
When pygame is initialized the key repeat is disabled.
New in pygame 1.8.
pygame默認模式沒有開啟這個模式,所以先用set,然後用get獲取輸入,並重復。注意最後一句,版本1.8以上才行。