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以上才行。