#debain8 apt-get remove --auto-remove libgtk-3-common #debain6 apt-get remove --auto-remove libgtk2.0-common
Category Archives: Deployment
如何为不再有更新支持的Debain6安装软件
Debain6已经没有更新支持了
#会提示找不到更新源 apt-get update
为了继续按照软件,需要做两件事情:
1、修改/etc/apt/sources.list文件
# deb http://ftp.debian.org/debian/ squeeze-updates main contrib # deb http://http.us.debian.org/debian/ squeeze contrib non-free main # deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib deb http://archive.debian.org/debian squeeze main deb http://archive.debian.org/debian squeeze-lts main
2、增加/etc/apt/apt.conf文件
Acquire::Check-Valid-Until false;
获取文件夹大小
VBoxManage常用命令
1、常用命令
#列出全部虚拟机 VBoxManage list vms #列出全部运行中的虚拟机 VBoxManage list runningvms #列出虚拟机信息 VBoxManage showvminfo uuid|vmname #开启虚拟机 VBoxManage startvm uuid|vmname #开启虚拟机,无GUI模式 VBoxManage startvm uuid|vmname --type headless #暂停虚拟机 VBoxManage controlvm uuid|vmname pause #继续运行虚拟机 VBoxManage controlvm uuid|vmname resume #按下机箱重启按钮 VBoxManage controlvm uuid|vmname reset #断电 VBoxManage controlvm uuid|vmname poweroff #按下机箱电影按钮 VBoxManage controlvm uuid|vmname acpipowerbutton #按下机箱睡眠按钮 VBoxManage controlvm uuid|vmname acpisleepbutton
2、全部参数
Oracle VM VirtualBox Command Line Management Interface Version 4.3.10
(C) 2005-2014 Oracle Corporation
All rights reserved.
Usage:
VBoxManage [<general option>] <command>
General Options:
[-v|--version] print version number and exit
[-q|--nologo] suppress the logo
[--settingspw <pw>] provide the settings password
[--settingspwfile <file>] provide a file containing the settings password
Commands:
list [--long|-l] vms|runningvms|ostypes|hostdvds|hostfloppies|
intnets|bridgedifs|hostonlyifs|natnets|dhcpservers|
hostinfo|hostcpuids|hddbackends|hdds|dvds|floppies|
usbhost|usbfilters|systemproperties|extpacks|
groups|webcams
showvminfo <uuid|vmname> [--details]
[--machinereadable]
showvminfo <uuid|vmname> --log <idx>
registervm <filename>
unregistervm <uuid|vmname> [--delete]
createvm --name <name>
[--groups <group>, ...]
[--ostype <ostype>]
[--register]
[--basefolder <path>]
[--uuid <uuid>]
modifyvm <uuid|vmname>
[--name <name>]
[--groups <group>, ...]
[--ostype <ostype>]
[--iconfile <filename>]
[--memory <memorysize in MB>]
[--pagefusion on|off]
[--vram <vramsize in MB>]
[--acpi on|off]
[--pciattach 03:04.0]
[--pciattach 03:04.0@02:01.0]
[--pcidetach 03:04.0]
[--ioapic on|off]
[--hpet on|off]
[--triplefaultreset on|off]
[--hwvirtex on|off]
[--nestedpaging on|off]
[--largepages on|off]
[--vtxvpid on|off]
[--vtxux on|off]
[--pae on|off]
[--longmode on|off]
[--synthcpu on|off]
[--cpuidset <leaf> <eax> <ebx> <ecx> <edx>]
[--cpuidremove <leaf>]
[--cpuidremoveall]
[--hardwareuuid <uuid>]
[--cpus <number>]
[--cpuhotplug on|off]
[--plugcpu <id>]
[--unplugcpu <id>]
[--cpuexecutioncap <1-100>]
[--rtcuseutc on|off]
[--graphicscontroller none|vboxvga|vmsvga]
[--monitorcount <number>]
[--accelerate3d on|off]
[--accelerate2dvideo on|off]
[--firmware bios|efi|efi32|efi64]
[--chipset ich9|piix3]
[--bioslogofadein on|off]
[--bioslogofadeout on|off]
[--bioslogodisplaytime <msec>]
[--bioslogoimagepath <imagepath>]
[--biosbootmenu disabled|menuonly|messageandmenu]
[--biossystemtimeoffset <msec>]
[--biospxedebug on|off]
[--boot<1-4> none|floppy|dvd|disk|net>]
[--nic<1-N> none|null|nat|bridged|intnet|hostonly|
generic|natnetwork]
[--nictype<1-N> Am79C970A|Am79C973|
82540EM|82543GC|82545EM|
virtio]
[--cableconnected<1-N> on|off]
[--nictrace<1-N> on|off]
[--nictracefile<1-N> <filename>]
[--nicproperty<1-N> name=[value]]
[--nicspeed<1-N> <kbps>]
[--nicbootprio<1-N> <priority>]
[--nicpromisc<1-N> deny|allow-vms|allow-all]
[--nicbandwidthgroup<1-N> none|<name>]
[--bridgeadapter<1-N> none|<devicename>]
[--hostonlyadapter<1-N> none|<devicename>]
[--intnet<1-N> <network name>]
[--nat-network<1-N> <network name>]
[--nicgenericdrv<1-N> <driver>
[--natnet<1-N> <network>|default]
[--natsettings<1-N> [<mtu>],[<socksnd>],
[<sockrcv>],[<tcpsnd>],
[<tcprcv>]]
[--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],
<hostport>,[<guestip>],<guestport>]
[--natpf<1-N> delete <rulename>]
[--nattftpprefix<1-N> <prefix>]
[--nattftpfile<1-N> <file>]
[--nattftpserver<1-N> <ip>]
[--natbindip<1-N> <ip>
[--natdnspassdomain<1-N> on|off]
[--natdnsproxy<1-N> on|off]
[--natdnshostresolver<1-N> on|off]
[--nataliasmode<1-N> default|[log],[proxyonly],
[sameports]]
[--macaddress<1-N> auto|<mac>]
[--mouse ps2|usb|usbtablet|usbmultitouch]
[--keyboard ps2|usb
[--uart<1-N> off|<I/O base> <IRQ>]
[--uartmode<1-N> disconnected|
server <pipe>|
client <pipe>|
file <file>|
<devicename>]
[--lpt<1-N> off|<I/O base> <IRQ>]
[--lptmode<1-N> <devicename>]
[--guestmemoryballoon <balloonsize in MB>]
[--audio none|null|dsound]
[--audiocontroller ac97|hda|sb16]
[--clipboard disabled|hosttoguest|guesttohost|
bidirectional]
[--draganddrop disabled|hosttoguest
[--vrde on|off]
[--vrdeextpack default|<name>
[--vrdeproperty <name=[value]>]
[--vrdeport <hostport>]
[--vrdeaddress <hostip>]
[--vrdeauthtype null|external|guest]
[--vrdeauthlibrary default|<name>
[--vrdemulticon on|off]
[--vrdereusecon on|off]
[--vrdevideochannel on|off]
[--vrdevideochannelquality <percent>]
[--usb on|off]
[--usbehci on|off]
[--snapshotfolder default|<path>]
[--teleporter on|off]
[--teleporterport <port>]
[--teleporteraddress <address|empty>
[--teleporterpassword <password>]
[--teleporterpasswordfile <file>|stdin]
[--tracing-enabled on|off]
[--tracing-config <config-string>]
[--tracing-allow-vm-access on|off]
[--usbcardreader on|off]
[--autostart-enabled on|off]
[--autostart-delay <seconds>]
[--vcpenabled on|off]
[--vcpscreens [<display>],...
[--vcpfile <filename>]
[--vcpwidth <width>]
[--vcpheight <height>]
[--vcprate <rate>]
[--vcpfps <fps>]
[--defaultfrontend default|<name>]
clonevm <uuid|vmname>
[--snapshot <uuid>|<name>]
[--mode machine|machineandchildren|all]
[--options link|keepallmacs|keepnatmacs|
keepdisknames]
[--name <name>]
[--groups <group>, ...]
[--basefolder <basefolder>]
[--uuid <uuid>]
[--register]
import <ovfname/ovaname>
[--dry-run|-n]
[--options keepallmacs|keepnatmacs]
[more options]
(run with -n to have options displayed
for a particular OVF)
export <machines> --output|-o <name>.<ovf/ova>
[--legacy09|--ovf09|--ovf10|--ovf20]
[--manifest]
[--iso]
[--options manifest|iso|nomacs|nomacsbutnat]
[--vsys <number of virtual system>]
[--product <product name>]
[--producturl <product url>]
[--vendor <vendor name>]
[--vendorurl <vendor url>]
[--version <version info>]
[--description <description info>]
[--eula <license text>]
[--eulafile <filename>]
startvm <uuid|vmname>...
[--type gui|sdl|headless]
controlvm <uuid|vmname>
pause|resume|reset|poweroff|savestate|
acpipowerbutton|acpisleepbutton|
keyboardputscancode <hex> [<hex> ...]|
setlinkstate<1-N> on|off |
nic<1-N> null|nat|bridged|intnet|hostonly|generic|
natnetwork [<devicename>] |
nictrace<1-N> on|off |
nictracefile<1-N> <filename> |
nicproperty<1-N> name=[value] |
nicpromisc<1-N> deny|allow-vms|allow-all |
natpf<1-N> [<rulename>],tcp|udp,[<hostip>],
<hostport>,[<guestip>],<guestport> |
natpf<1-N> delete <rulename> |
guestmemoryballoon <balloonsize in MB> |
usbattach <uuid>|<address> |
usbdetach <uuid>|<address> |
clipboard disabled|hosttoguest|guesttohost|
bidirectional |
draganddrop disabled|hosttoguest |
vrde on|off |
vrdeport <port> |
vrdeproperty <name=[value]> |
vrdevideochannelquality <percent> |
setvideomodehint <xres> <yres> <bpp>
[[<display>] [<enabled:yes|no> |
[<xorigin> <yorigin>]]] |
screenshotpng <file> [display] |
vcpenabled on|off |
vcpscreens all|none|<screen>,[<screen>...] |
setcredentials <username>
--passwordfile <file> | <password>
<domain>
[--allowlocallogon <yes|no>] |
teleport --host <name> --port <port>
[--maxdowntime <msec>]
[--passwordfile <file> |
--password <password>] |
plugcpu <id> |
unplugcpu <id> |
cpuexecutioncap <1-100>
webcam <attach [path [settings]]> | <detach [path]> | <list>
discardstate <uuid|vmname>
adoptstate <uuid|vmname> <state_file>
snapshot <uuid|vmname>
take <name> [--description <desc>] [--live] |
delete <uuid|snapname> |
restore <uuid|snapname> |
restorecurrent |
edit <uuid|snapname>|--current
[--name <name>]
[--description <desc>] |
list [--details|--machinereadable]
showvminfo <uuid|snapname>
closemedium disk|dvd|floppy <uuid|filename>
[--delete]
storageattach <uuid|vmname>
--storagectl <name>
[--port <number>]
[--device <number>]
[--type dvddrive|hdd|fdd]
[--medium none|emptydrive|additions|
<uuid|filename>|host:<drive>|iscsi]
[--mtype normal|writethrough|immutable|shareable|
readonly|multiattach]
[--comment <text>]
[--setuuid <uuid>]
[--setparentuuid <uuid>]
[--passthrough on|off]
[--tempeject on|off]
[--nonrotational on|off]
[--discard on|off]
[--bandwidthgroup <name>]
[--forceunmount]
[--server <name>|<ip>]
[--target <target>]
[--tport <port>]
[--lun <lun>]
[--encodedlun <lun>]
[--username <username>]
[--password <password>]
[--initiator <initiator>]
[--intnet]
storagectl <uuid|vmname>
--name <name>
[--add ide|sata|scsi|floppy|sas]
[--controller LSILogic|LSILogicSAS|BusLogic|
IntelAHCI|PIIX3|PIIX4|ICH6|I82078]
[--portcount <1-30>]
[--hostiocache on|off]
[--bootable on|off]
[--remove]
bandwidthctl <uuid|vmname>
add <name> --type disk|network
--limit <megabytes per second>[k|m|g|K|M|G] |
set <name>
--limit <megabytes per second>[k|m|g|K|M|G] |
remove <name> |
list [--machinereadable]
(limit units: k=kilobit, m=megabit, g=gigabit,
K=kilobyte, M=megabyte, G=gigabyte)
showhdinfo <uuid|filename>
createhd --filename <filename>
[--size <megabytes>|--sizebyte <bytes>]
[--diffparent <uuid>|<filename>
[--format VDI|VMDK|VHD] (default: VDI)
[--variant Standard,Fixed,Split2G,Stream,ESX]
modifyhd <uuid|filename>
[--type normal|writethrough|immutable|shareable|
readonly|multiattach]
[--autoreset on|off]
[--property <name=[value]>]
[--compact]
[--resize <megabytes>|--resizebyte <bytes>]
clonehd <uuid|inputfile> <uuid|outputfile>
[--format VDI|VMDK|VHD|RAW|<other>]
[--variant Standard,Fixed,Split2G,Stream,ESX]
[--existing]
convertfromraw <filename> <outputfile>
[--format VDI|VMDK|VHD]
[--variant Standard,Fixed,Split2G,Stream,ESX]
[--uuid <uuid>]
convertfromraw stdin <outputfile> <bytes>
[--format VDI|VMDK|VHD]
[--variant Standard,Fixed,Split2G,Stream,ESX]
[--uuid <uuid>]
getextradata global|<uuid|vmname>
<key>|enumerate
setextradata global|<uuid|vmname>
<key>
[<value>] (no value deletes key)
setproperty machinefolder default|<folder> |
hwvirtexclusive on|off |
vrdeauthlibrary default|<library> |
websrvauthlibrary default|null|<library> |
vrdeextpack null|<library> |
autostartdbpath null|<folder> |
loghistorycount <value>
defaultfrontend default|<name>
usbfilter add <index,0-N>
--target <uuid|vmname>|global
--name <string>
--action ignore|hold (global filters only)
[--active yes|no] (yes)
[--vendorid <XXXX>] (null)
[--productid <XXXX>] (null)
[--revision <IIFF>] (null)
[--manufacturer <string>] (null)
[--product <string>] (null)
[--remote yes|no] (null, VM filters only)
[--serialnumber <string>] (null)
[--maskedinterfaces <XXXXXXXX>]
usbfilter modify <index,0-N>
--target <uuid|vmname>|global
[--name <string>]
[--action ignore|hold] (global filters only)
[--active yes|no]
[--vendorid <XXXX>|""]
[--productid <XXXX>|""]
[--revision <IIFF>|""]
[--manufacturer <string>|""]
[--product <string>|""]
[--remote yes|no] (null, VM filters only)
[--serialnumber <string>|""]
[--maskedinterfaces <XXXXXXXX>]
usbfilter remove <index,0-N>
--target <uuid|vmname>|global
sharedfolder add <uuid|vmname>
--name <name> --hostpath <hostpath>
[--transient] [--readonly] [--automount]
sharedfolder remove <uuid|vmname>
--name <name> [--transient]
guestproperty get <uuid|vmname>
<property> [--verbose]
guestproperty set <uuid|vmname>
<property> [<value> [--flags <flags>]]
guestproperty delete|unset <uuid|vmname>
<property>
guestproperty enumerate <uuid|vmname>
[--patterns <patterns>]
guestproperty wait <uuid|vmname> <patterns>
[--timeout <msec>] [--fail-on-timeout]
guestcontrol <uuid|vmname>
exec[ute]
--image <path to program> --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose] [--timeout <msec>]
[--environment "<NAME>=<VALUE> [<NAME>=<VALUE>]"]
[--wait-exit] [--wait-stdout] [--wait-stderr]
[--dos2unix] [--unix2dos]
[-- [<argument1>] ... [<argumentN>]]
copyfrom
<guest source> <host dest> --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose]
[--dryrun] [--follow] [--recursive]
copyto|cp
<host source> <guest dest> --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose]
[--dryrun] [--follow] [--recursive]
createdir[ectory]|mkdir|md
<guest directory>... --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose]
[--parents] [--mode <mode>]
removedir[ectory]|rmdir
<guest directory>... --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose]
[--recursive|-R|-r]
removefile|rm
<guest file>... --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose]
ren[ame]|mv
<source>... <dest> --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose]
createtemp[orary]|mktemp
<template> --username <name>
[--passwordfile <file> | --password <password>]
[--directory] [--secure] [--tmpdir <directory>]
[--domain <domain>] [--mode <mode>] [--verbose]
list <all|sessions|processes|files> [--verbose]
process kill --session-id <ID>
| --session-name <name or pattern>
[--verbose]
<PID> ... <PID n>
[p[s]]kill --session-id <ID>
| --session-name <name or pattern>
[--verbose]
<PID> ... <PID n>
session close --session-id <ID>
| --session-name <name or pattern>
| --all
[--verbose]
stat
<file>... --username <name>
[--passwordfile <file> | --password <password>]
[--domain <domain>] [--verbose]
updateadditions
[--source <guest additions .ISO>] [--verbose]
[--wait-start]
[-- [<argument1>] ... [<argumentN>]]
watch [--verbose]
debugvm <uuid|vmname>
dumpguestcore --filename <name> |
info <item> [args] |
injectnmi |
log [--release|--debug] <settings> ...|
logdest [--release|--debug] <settings> ...|
logflags [--release|--debug] <settings> ...|
osdetect |
osinfo |
getregisters [--cpu <id>] <reg>|all ... |
setregisters [--cpu <id>] <reg>=<value> ... |
show [--human-readable|--sh-export|--sh-eval|
--cmd-set]
<logdbg-settings|logrel-settings>
[[opt] what ...] |
statistics [--reset] [--pattern <pattern>]
[--descriptions]
metrics list [*|host|<vmname> [<metric_list>]]
(comma-separated)
metrics setup
[--period <seconds>] (default: 1)
[--samples <count>] (default: 1)
[--list]
[*|host|<vmname> [<metric_list>]]
metrics query [*|host|<vmname> [<metric_list>]]
metrics enable
[--list]
[*|host|<vmname> [<metric_list>]]
metrics disable
[--list]
[*|host|<vmname> [<metric_list>]]
metrics collect
[--period <seconds>] (default: 1)
[--samples <count>] (default: 1)
[--list]
[--detach]
[*|host|<vmname> [<metric_list>]]
natnetwork add --netname <name>
--network <network>
[--enable|--disable]
[--dhcp on|off]
[--port-forward-4 <rule>]
[--loopback-4 <rule>]
[--ipv6 on|off]
[--port-forward-6 <rule>]
[--loopback-6 <rule>]
natnetwork remove --netname <name>
natnetwork modify --netname <name>
[--network <network>]
[--enable|--disable]
[--dhcp on|off]
[--port-forward-4 <rule>]
[--loopback-4 <rule>]
[--ipv6 on|off]
[--port-forward-6 <rule>]
[--loopback-6 <rule>]
natnetwork start --netname <name>
natnetwork stop --netname <name>
hostonlyif ipconfig <name>
[--dhcp |
--ip<ipv4> [--netmask<ipv4> (def: 255.255.255.0)] |
--ipv6<ipv6> [--netmasklengthv6<length> (def: 64)]]
create |
remove <name>
dhcpserver add|modify --netname <network_name> |
--ifname <hostonly_if_name>
[--ip <ip_address>
--netmask <network_mask>
--lowerip <lower_ip>
--upperip <upper_ip>]
[--enable | --disable]
dhcpserver remove --netname <network_name> |
--ifname <hostonly_if_name>
extpack install [--replace] <tarball> |
uninstall [--force] <name> |
cleanup
制作Ubuntu安装U盘
本文以Ubuntu为例,讲解一下Linux安装U盘的制作方法。
首先,下载安装盘的ISO镜像。
http://releases.ubuntu.com/
然后要知道,自己的BIOS模式是什么,是Legecy还是UEFI。这个通过查看操作系统信息或BIOS设置就可以知道。
如果是Legecy模式:
1、下载工具universal usb installer
2、制作安装U盘。
3、重启,从U盘启动即可
如果是UEFI模式:
1、那只需要将盘格式化为FAT32模式,然后将64位的ISO镜像解压到盘的根目录就好了。
2、保证在盘的根目录可以开单到UEFI目录。
3、重启,关闭BIOS中的安全启动保护,从而可以用U盘启动
4、重启,从U盘启动即可
5、安装后,记得打开BIOS中安全安全启动保护
Windows创建符号连接
1、mklink
该命令可以创建符号链接、硬链接及快捷方式。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D Creates a directory symbolic link. Default is a file
symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction.
Link specifies the new symbolic link name.
Target specifies the path (relative or absolute) that the new link
refers to.
2、fsutil hardlink
该命令可以创建硬链接。
create Create a hardlink list Enumerate hardlinks on a file
3、junction
该工具是SYSINTERNALS提供的,可以新增或删除符号链接。
The first usage is for displaying reparse point information, the
second usage is for creating a junction point, and the last for
deleting a junction point:
usage: junction.exe [-s] [-q] <file or directory>
-q Don't print error messages (quiet)
-s Recurse subdirectories
usage: junction.exe <junction directory> <junction target>
example: junction d:\link c:\windows
usage: junction.exe -d <junction directory>
JMX获取Tomcat管理信息
1、首先配置JVM
JVM要放到NTFS卷中,在JVM路径下找到jmxremote.access及jmxremote.password.template两个文件。
将jmxremote.password.template复制一份为jmxremote.password,对运行用户可读,对普通用户不可读。
2、配置Tomcat启动参数
修改catalina.bat,增加下面一行
SET "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=8686 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
3、启动Tomcat
4、客户端程序JMXInfo.java
package com.neohope.jmx.test;
import java.io.IOException;
import java.lang.management.MemoryUsage;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.management.MBeanServerConnection;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class JMXInfo {
public static void main(String[] args) throws Exception {
JMXConnector connector = null;
try {
// 获取JMX连接
String ip = "127.0.0.1";
String port = "8686";
JMXServiceURL serviceURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + ip + ":" + port + "/jmxrmi");
Map<String, String[]> map = new HashMap<String, String[]>();
String[] credentials = new String[] { "controlRole", "R&D" };
map.put("jmx.remote.credentials", credentials);
connector = JMXConnectorFactory.connect(serviceURL, map);
MBeanServerConnection mbsc = connector.getMBeanServerConnection();
// 获取JVM信息
ObjectName runtimeObjName = new ObjectName("java.lang:type=Runtime");
System.out.println("厂商:" + (String) mbsc.getAttribute(runtimeObjName, "VmVendor"));
System.out.println("程序:" + (String) mbsc.getAttribute(runtimeObjName, "VmName"));
System.out.println("版本:" + (String) mbsc.getAttribute(runtimeObjName, "VmVersion"));
// 获取JVM运行时间
Date starttime = new Date((Long) mbsc.getAttribute(runtimeObjName, "StartTime"));
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("启动时间:" + df.format(starttime));
Long timespan = (Long) mbsc.getAttribute(runtimeObjName, "Uptime");
System.out.println("持续工作时间:" + JMXInfo.formatTimeSpan(timespan));
// 获取JVM内存信息
ObjectName heapObjName = new ObjectName("java.lang:type=Memory");
MemoryUsage heapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName, "HeapMemoryUsage"));
long heapMaxMemory = heapMemoryUsage.getMax();
long heapCommitMemory = heapMemoryUsage.getCommitted();
long heapUsedMemory = heapMemoryUsage.getUsed();
System.out.println("heap:" + (double) heapUsedMemory * 100 / heapCommitMemory + "%");
MemoryUsage nonheapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName, "NonHeapMemoryUsage"));
long nonHeapCommitMemory = nonheapMemoryUsage.getCommitted();
long nonHeapUsedMemory = heapMemoryUsage.getUsed();
System.out.println("nonheap:" + (double) nonHeapUsedMemory * 100 / nonHeapCommitMemory + "%");
ObjectName permObjName = new ObjectName("java.lang:type=MemoryPool,name=Perm Gen");
MemoryUsage permGenUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(permObjName, "Usage"));
long permCommitted = permGenUsage.getCommitted();
long permUsed = heapMemoryUsage.getUsed();
System.out.println("perm gen:" + (double) permUsed * 100 / permCommitted + "%");
// All Domains
for (int j = 0; j < mbsc.getDomains().length; j++) {
System.out.println(mbsc.getDomains()[j]);
}
// All MBeans
Set<ObjectInstance> MBeanset = mbsc.queryMBeans(null, null);
System.out.println("MBeanset.size() : " + MBeanset.size());
Iterator<ObjectInstance> MBeansetIterator = MBeanset.iterator();
while (MBeansetIterator.hasNext()) {
ObjectInstance objectInstance = (ObjectInstance) MBeansetIterator.next();
ObjectName objectName = objectInstance.getObjectName();
String canonicalName = objectName.getCanonicalName();
System.out.println("canonicalName : " + canonicalName);
}
// 全部线程池
ObjectName threadpoolObjName = new ObjectName("Catalina:type=ThreadPool,*");
Set<ObjectName> s2 = mbsc.queryNames(threadpoolObjName, null);
for (ObjectName obj : s2) {
System.out.println("端口名:" + obj.getKeyProperty("name"));
ObjectName objname = new ObjectName(obj.getCanonicalName());
System.out.println("最大线程数:" + mbsc.getAttribute(objname, "maxThreads"));
System.out.println("当前线程数:" + mbsc.getAttribute(objname, "currentThreadCount"));
System.out.println("繁忙线程数:" + mbsc.getAttribute(objname, "currentThreadsBusy"));
}
//HTTP Thread Pool
ObjectName threadPoolObjName = new ObjectName("Catalina:type=ThreadPool,*");
Set<ObjectName> threadPoolObjNames = mbsc.queryNames(threadPoolObjName, null);
for (ObjectName obj : threadPoolObjNames) {
if (obj.getKeyProperty("name").contains("http")) {
ObjectName objname = new ObjectName(obj.getCanonicalName());
System.out.println("HTTP最大线程数:"+ mbsc.getAttribute(objname, "maxThreads").toString());// 最大线程数
System.out.println("HTTP当前线程数:"+ mbsc.getAttribute(objname, "currentThreadCount").toString());// 当前线程数
System.out.println("HTTP繁忙线程数:" + mbsc.getAttribute(objname, "currentThreadsBusy").toString());// 繁忙线程数
}
}
// 全部应用
ObjectName managerObjName = new ObjectName("Catalina:type=Manager,*");
Set<ObjectName> s = mbsc.queryNames(managerObjName, null);
for (ObjectName obj : s) {
System.out.println("应用名:" + obj.getKeyProperty("path"));
ObjectName objname = new ObjectName(obj.getCanonicalName());
System.out.println("最大会话数:" + mbsc.getAttribute(objname, "maxActiveSessions"));
System.out.println("会话数:" + mbsc.getAttribute(objname, "activeSessions"));
System.out.println("活动会话数:" + mbsc.getAttribute(objname, "sessionCounter"));
}
//RequestProcessor
ObjectName requestObjName = new ObjectName("Catalina:type=RequestProcessor,*");
Set<ObjectName> requestObjNameSet = mbsc.queryNames(requestObjName, null);
Integer aliveSocketsCount = 0;
Long maxProcessingTime = 0L;
Long processingTime = 0L;
Long requstCount = 0L;
Long errorCount = 0L;
BigDecimal bytesReceived = BigDecimal.ZERO;
BigDecimal bytesSend = BigDecimal.ZERO;
for (ObjectName obj : requestObjNameSet) {
if (mbsc.getAttribute(obj, "stage").toString().trim().equals("1"))
aliveSocketsCount++;
long nowMaxProcessingTime = Long.parseLong(mbsc.getAttribute(obj, "maxTime").toString());
if (maxProcessingTime < nowMaxProcessingTime)
maxProcessingTime = nowMaxProcessingTime;
processingTime += Long.parseLong(mbsc.getAttribute(obj, "processingTime").toString());
requstCount += Long.parseLong(mbsc.getAttribute(obj, "requestCount").toString());
errorCount += Long.parseLong(mbsc.getAttribute(obj, "errorCount").toString());
bytesReceived = bytesReceived.add(new BigDecimal(mbsc.getAttribute(obj, "bytesReceived").toString()));
bytesSend = bytesSend.add(new BigDecimal(mbsc.getAttribute(obj, "bytesSent").toString()));
}
System.out.println("活动sockets计数:"+ aliveSocketsCount.toString());
System.out.println("最大处理时间:"+ maxProcessingTime.toString());
processingTime = processingTime / 1000;
System.out.println("总处理时间:"+ processingTime.toString());
System.out.println("请求总数:"+ requstCount.toString());
System.out.println("错误总数:"+ errorCount.toString());
System.out.println("接收字节数:"+ bytesReceived.divide(new BigDecimal(1024L * 1024))
.setScale(2, RoundingMode.HALF_UP).toPlainString());
System.out.println("发送字节数:"+
bytesSend.divide(new BigDecimal(1024L * 1024)).setScale(2, RoundingMode.HALF_UP).toPlainString());
} catch (Exception e) {
e.printStackTrace();
}
finally
{
if(connector!=null)
{
try {
connector.close();
} catch (IOException e) {
}
}
}
}
public static String formatTimeSpan(long span) {
long minseconds = span % 1000;
span = span / 1000;
long seconds = span % 60;
span = span / 60;
long mins = span % 60;
span = span / 60;
long hours = span % 24;
span = span / 24;
long days = span;
return (new Formatter()).format("%1$d天 %2$02d小时%3$02d分%4$02d秒%5$03d毫秒", days, hours, mins, seconds, minseconds)
.toString();
}
}
5.运行结果
厂商:Oracle Corporation 程序:Java HotSpot(TM) Client VM 版本:24.65-b04 启动时间:2016-06-21 20:57:37 持续工作时间:0天 00小时29分31秒018毫秒 heap:60.11998789417739% nonheap:54.523986450299915% perm gen:165.7018025716146% Users JMImplementation com.sun.management Catalina java.nio java.lang java.util.logging MBeanset.size() : 150 canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=HTMLManager canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=Manager canonicalName : java.lang:type=Memory canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=stock canonicalName : JMImplementation:type=MBeanServerDelegate canonicalName : Catalina:context=/host-manager,host=localhost,name=StandardContextValve,type=Valve canonicalName : Catalina:port=8080,type=Connector canonicalName : Catalina:context=/examples,host=localhost,name=foo/name1,resourcetype=Context,type=Environment canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter canonicalName : Catalina:context=/host-manager,host=localhost,type=WebappClassLoader canonicalName : java.nio:name=mapped,type=BufferPool canonicalName : java.lang:name=MarkSweepCompact,type=GarbageCollector canonicalName : Catalina:context=/manager,host=localhost,name=StandardContextValve,type=Valve canonicalName : Catalina:context=/examples,host=localhost,name=name3,resourcetype=Context,type=Environment canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=default canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,j2eeType=Servlet,name=jsp canonicalName : Catalina:host=localhost,name=ErrorReportValve,type=Valve canonicalName : Catalina:context=/host-manager,host=localhost,type=Cache canonicalName : java.lang:name=Tenured Gen,type=MemoryPool canonicalName : Catalina:context=/manager,host=localhost,name=BasicAuthenticator,type=Valve canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter canonicalName : Catalina:type=Engine canonicalName : Catalina:context=/,host=localhost,type=Manager canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=JMXProxy canonicalName : Catalina:context=/docs,host=localhost,type=WebappClassLoader canonicalName : java.lang:name=Code Cache,type=MemoryPool canonicalName : java.util.logging:type=Logging canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,name=jsp,type=JspMonitor canonicalName : Catalina:realmPath=/realm0/realm0,type=Realm canonicalName : Catalina:name=StandardEngineValve,type=Valve canonicalName : Catalina:port=8009,type=ProtocolHandler canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=RequestParamExample canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/ canonicalName : Catalina:context=/manager,host=localhost,type=Manager canonicalName : Catalina:context=/host-manager,host=localhost,name=BasicAuthenticator,type=Valve canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Set Character Encoding canonicalName : Catalina:context=/,host=localhost,type=NamingResources canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Request Dumper Filter canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=ServletToJsp canonicalName : Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-apr-8080" canonicalName : java.lang:type=Compilation canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Filter,name=SetCharacterEncoding canonicalName : java.lang:name=Survivor Space,type=MemoryPool canonicalName : Catalina:port=8080,type=ProtocolHandler canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=ChatServlet canonicalName : Catalina:context=/examples,host=localhost,type=WebappClassLoader canonicalName : Catalina:context=/examples,host=localhost,name=foo/bar/name2,resourcetype=Context,type=Environment canonicalName : Catalina:type=StringCache canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter canonicalName : java.lang:type=Threading canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=Status canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/manager canonicalName : Catalina:host=localhost,name=StandardHostValve,type=Valve canonicalName : Users:database=UserDatabase,rolename=manager-gui,type=Role canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=default canonicalName : java.lang:name=Perm Gen,type=MemoryPool canonicalName : Catalina:port=8009,type=Mapper canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=wsEchoStream canonicalName : Catalina:context=/docs,host=localhost,type=Loader canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=jsp canonicalName : Catalina:context=/examples,host=localhost,name=FormAuthenticator,type=Valve canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=wsSnake canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=jsp canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=HostManager canonicalName : Catalina:name="http-apr-8080",type=GlobalRequestProcessor canonicalName : Catalina:context=/docs,host=localhost,type=NamingResources canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=jsp canonicalName : java.lang:name=Perm Gen [shared-rw],type=MemoryPool canonicalName : Catalina:context=/,host=localhost,type=Cache canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=wsChat canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=CompressionFilterTestServlet canonicalName : java.lang:name=CodeCacheManager,type=MemoryManager canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=HTMLHostManager canonicalName : Catalina:host=localhost,type=Host canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,j2eeType=Servlet,name=jsp canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=HelloWorldExample canonicalName : Catalina:name=HttpRequest2,type=RequestProcessor,worker="http-apr-8080" canonicalName : Catalina:name="ajp-apr-8009",type=GlobalRequestProcessor canonicalName : java.lang:type=Runtime canonicalName : java.nio:name=direct,type=BufferPool canonicalName : java.lang:name=Copy,type=GarbageCollector canonicalName : Catalina:name=HttpRequest3,type=RequestProcessor,worker="http-apr-8080" canonicalName : Catalina:context=/host-manager,host=localhost,type=Manager canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,name=jsp,type=JspMonitor canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,name=jsp,type=JspMonitor canonicalName : Catalina:host=localhost,name=AccessLogValve,type=Valve canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/examples canonicalName : Catalina:name="ajp-apr-8009",type=ThreadPool canonicalName : Catalina:type=Service canonicalName : com.sun.management:type=HotSpotDiagnostic canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,j2eeType=Servlet,name=default canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,j2eeType=Servlet,name=default canonicalName : Catalina:context=/,host=localhost,type=WebappClassLoader canonicalName : java.lang:type=OperatingSystem canonicalName : Catalina:context=/examples,host=localhost,name=StandardContextValve,type=Valve canonicalName : Catalina:type=Server canonicalName : Catalina:port=8009,type=Connector canonicalName : Catalina:name="http-apr-8080",type=ThreadPool canonicalName : Catalina:context=/,host=localhost,name=StandardContextValve,type=Valve canonicalName : Catalina:class=org.apache.catalina.UserDatabase,name="UserDatabase",resourcetype=Global,type=Resource canonicalName : Catalina:context=/manager,host=localhost,type=WebappClassLoader canonicalName : Catalina:context=/examples,host=localhost,type=Manager canonicalName : Catalina:context=/examples,host=localhost,type=Cache canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/host-manager canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/docs canonicalName : Users:database=UserDatabase,type=UserDatabase canonicalName : Catalina:context=/examples,host=localhost,name=foo/name4,resourcetype=Context,type=Environment canonicalName : Catalina:context=/docs,host=localhost,name=StandardContextValve,type=Valve canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Compression Filter canonicalName : Catalina:type=NamingResources canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=SessionExample canonicalName : Catalina:context=/,host=localhost,type=Loader canonicalName : Catalina:name=common,type=ServerClassLoader canonicalName : Catalina:context=/examples,host=localhost,type=Loader canonicalName : Catalina:context=/manager,host=localhost,type=Cache canonicalName : Catalina:context=/docs,host=localhost,type=Cache canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Filter,name=CSRF canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=CookieExample canonicalName : Users:database=UserDatabase,type=User,username="tomcat" canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Filter,name=SetCharacterEncoding canonicalName : Catalina:host=localhost,type=Deployer canonicalName : Catalina:type=MBeanFactory canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=RequestInfoExample canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Timing filter canonicalName : Catalina:context=/examples,host=localhost,type=NamingResources canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=default canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Filter,name=CSRF canonicalName : Catalina:context=/manager,host=localhost,type=Loader canonicalName : Users:database=UserDatabase,type=User,username="admin" canonicalName : Catalina:context=/docs,host=localhost,type=Manager canonicalName : java.lang:name=Eden Space,type=MemoryPool canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=RequestHeaderExample canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,name=jsp,type=JspMonitor canonicalName : java.lang:name=Perm Gen [shared-ro],type=MemoryPool canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,name=jsp,type=JspMonitor canonicalName : Catalina:context=/host-manager,host=localhost,type=NamingResources canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async2 canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async3 canonicalName : Catalina:context=/examples,host=localhost,name=minExemptions,resourcetype=Context,type=Environment canonicalName : Catalina:context=/manager,host=localhost,type=NamingResources canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async0 canonicalName : java.lang:type=ClassLoading canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async1 canonicalName : Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=wsEchoMessage canonicalName : Catalina:realmPath=/realm0,type=Realm canonicalName : Catalina:context=/host-manager,host=localhost,type=Loader canonicalName : Users:database=UserDatabase,rolename=tomcat,type=Role canonicalName : Catalina:port=8080,type=Mapper 端口名:"ajp-apr-8009" 最大线程数:200 当前线程数:0 繁忙线程数:0 端口名:"http-apr-8080" 最大线程数:200 当前线程数:10 繁忙线程数:0 HTTP最大线程数:200 HTTP当前线程数:10 HTTP繁忙线程数:0 应用名:null 最大会话数:-1 会话数:0 活动会话数:0 应用名:null 最大会话数:-1 会话数:0 活动会话数:0 应用名:null 最大会话数:-1 会话数:0 活动会话数:0 应用名:null 最大会话数:-1 会话数:0 活动会话数:0 应用名:null 最大会话数:-1 会话数:0 活动会话数:0 活动sockets计数:0 最大处理时间:176 总处理时间:0 请求总数:9 错误总数:0 接收字节数:0.00 发送字节数:0.07
Tomcat指定native library路径
一般,指定JVM的native library路径,只需要用下面的参数就好了
-Djava.library.path=PATH_TO_NATIVE_LIBRARY
Tomcat指定native library路径时,还是不要使用这边参数的好。
建议直接修改PATH环境变量,将dll或so放到环境变量PATH的路径下就好了。
TOMCAT默认将PATH赋值给-Djava.library.path参数的。
AXIS2跳过HTTPS证书验证的几种方式
AXIS2启用HTTPS,只需要设置truststore及密码,然后对于HTTPS协议,就会自动启用SSL通信了。
System.setProperty("javax.net.ssl.trustStore", PATH_TO_TRUSTSTORE);
System.setProperty("javax.net.ssl.trustStorePassword", PASSWORD_OF_TRUSTSTORE);
但有时,基于种种原因,比如证书链有问题,比如证书HOST有问题,比如证书本身就有问题,说多了都是泪,这是后就要绕过HTTPS的证书验证了。总起来说,AXIS2有下面几种方式可以跳过HTTPS证书验证:
1、通过设置TrustAllTrustManager来绕过证书验证
这是一种局部设置方式,方式适合用wsdl2java生成stub代码的程序来执行,比如,客户端可以:
SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(null, new TrustManager[] {new TrustAllTrustManager()}, null);
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER,
new Protocol("https",(ProtocolSocketFactory)new SSLProtocolSocketFactory(sslCtx),443));
2、通过设置CUSTOM_PROTOCOL_HANDLER来绕过证书验证
这是一种全局设置的方式。
Protocol myProtocolHandler = new Protocol("https", new NeoSecureSocketFactory(), 443);
//中心端注册CUSTOM_PROTOCOL_HANDLER
messageContext.getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, myProtocolHandler);
//客户端注册CUSTOM_PROTOCOL_HANDLER
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, myProtocolHandler);
3、注册Protocol来绕过证书验证
这是一种全局设置的方式。
Protocol.registerProtocol("https", new Protocol("https", new NeoSecureSocketFactory(), 443));
4、最后是NeoSecureSocketFactory.java
package com.neohope.axis2test;
import javax.net.ssl.*;
import java.io.*;
import java.net.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import javax.net.SocketFactory;
import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
/**
*
* @author Hansen
*/
public class NeoSecureSocketFactory implements ProtocolSocketFactory {
private static SSLContext ssl = null;
private static TrustManager[ ] getTrustManagers() {
TrustManager[ ] certs = new TrustManager[ ] {
new X509TrustManager() {
public X509Certificate[ ] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[ ] certs, String t) { }
public void checkServerTrusted(X509Certificate[ ] certs, String t) { }
}
};
return certs;
}
private static SSLContext createSSLContext() {
try {
TrustManager[] trustManagers = getTrustManagers();
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, null);
return sslContext;
} catch (KeyManagementException e) {
;
} catch (NoSuchAlgorithmException e) {
;
}
return null;
}
private static SSLContext getSSLContext() {
if (ssl == null) {
ssl = createSSLContext();
}
return ssl;
}
@Override
public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(host, port,
clientHost, clientPort);
}
@Override
public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort, HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException {
if (params == null) {
throw new IllegalArgumentException("Parameters may not be null");
}
int timeout = params.getConnectionTimeout();
SocketFactory socketfactory = getSSLContext().getSocketFactory();
if (timeout == 0) {
return socketfactory.createSocket(host, port, clientHost,
clientPort);
}
Socket socket = socketfactory.createSocket();
SocketAddress localaddr = new InetSocketAddress(clientHost, clientPort);
SocketAddress remoteaddr = new InetSocketAddress(host, port);
socket.bind(localaddr);
try {
socket.connect(remoteaddr, timeout);
} catch (Exception e) {
throw new ConnectTimeoutException(e.getMessage(), e);
}
return socket;
}
@Override
public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(host, port);
}
}
SUN PKIX、AXIS2及C#在HTTPS认证方式的区别
最近尝试了用两级自签名证书来验证SUN PKIX、AXIS2及C#在HTTPS认证方式的区别。
两级证书为:
1、CA证书NMyCA1024
2、服务器证书serversigned
其中,AXIS2通过验证是最简单的,
1、服务端设置serversigned证书的Key Store
2、客户端设置NMyCA1024或serversigned的Trust Store
3、通过验证。
如果要SUN PKIX通过验证(Oracle的JDK/JRE自带)
1、那需要服务端设置serversigned证书的Key Store
2、客户端设置NMyCA1024或serversigned的Trust Store
3、客户端把NMyCA1024证书导入JDK或JRE的CA证书列表cacerts
4、通过验证。
如果要C#通过验证
1、那需要服务端设置serversigned证书的P12文件
2、客户端设置NMyCA1024或serversigned的Trust Store
3、客户端双击NMyCA1024证书导入IE的CA证书列表
4、通过验证。