云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2015年6月11日

1. java zip 多个文件时,如果先添加了一个excel文件,然后再想添加其他的文件时会出现 steam is closed的错误。这是因为work.write(outputSteam)后,出调用outputSteam.close(),关闭输出流。
解决方法:
将原来的程序:
            ZipEntry entry = new ZipEntry( "file3.txt" );
            zos.putNextEntry( entry );
            workbook.write( zos );
            zos.closeEntry();
改为:
            ZipEntry entry = new ZipEntry( "file3.txt" );
            zos.putNextEntry( entry );
            workbook.write( new NonCloseableOutputStream( zos ) );
            zos.closeEntry();

其中 NonCloseableOutputStream 定义如下:
public class NonCloseableOutputStream extends java.io.FilterOutputStream {
    public NonCloseableOutputStream(OutputStream out) {
        super(out);
    }
    @Override public void close() throws IOException {
        flush();
    }
}



2. 使用binary使得mysql区分大小写
select * from table1 where binary field1 = 'abc';

posted @ 2017-08-09 19:52 云自无心水自闲 阅读(415) | 评论 (0)编辑 收藏

https://notepad-plus-plus.org/community/topic/13661/plugin-manager-x64-available-submit-your-plugins

posted @ 2017-06-26 09:33 云自无心水自闲 阅读(387) | 评论 (0)编辑 收藏

move Git Server to a new IP/URL:

you can just edit 
.git/config and change the URLs there

也可以在git视图中,右键点击项目,选择属性,然后修改url中的地址

posted @ 2017-06-15 08:40 云自无心水自闲 阅读(311) | 评论 (0)编辑 收藏

autohotkey
listary
cmder可以split screen,在一个窗口中同时运行数个cmd

posted @ 2017-05-24 07:13 云自无心水自闲 阅读(17411) | 评论 (0)编辑 收藏

官网地址:autohotkey.com

; fill password
^Numpad2::
Send, root{tab}root{enter}
Return
^Numpad3::
IfWinExist, ahk_exe OUTLOOK.EXE
{
    WinActivate ahk_exe OUTLOOK.EXE ; Automatically uses the window found above.
    ; WinMaximize  ; same
    ;Send, Some text.{Enter}
msgbox Outlook is running.
}
Return

posted @ 2017-03-08 13:06 云自无心水自闲 阅读(356) | 评论 (0)编辑 收藏

<html>
<head>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script>
        window.onload = function () {
            var app = new Vue({
                el: '#app',
                data: {
                    message: 'Hello Vue!'
                }
            });
        }    
    </script>
</head>

<body>
    <div id="app">
      {{ message }}
    </div>
</body>
</html>

posted @ 2017-02-09 07:41 云自无心水自闲 阅读(392) | 评论 (0)编辑 收藏


String[] splits=someString.split("a,b,c,d", ",");
logger.debug( "array: {}", (Object) splits );

这里要注意的就是要把数组的数据类型强制转换为Object 

posted @ 2016-12-29 11:51 云自无心水自闲 阅读(1607) | 评论 (0)编辑 收藏

在windows环境中,可以用如下方法重置root密码

1、先停止mysql数据库

2、保存密码重置sql文件
     5.7.6(包括)以后的版本:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
     5.7.5(包括)以前的版本:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
假设保存到文件: c:\reset.txt

3、以管理员身份打开命令行窗口,运行
C:\> cd "C:\Program Files\MySQL\MySQL Server 5.5\bin"
C:\> mysqld --init-file=C:\reset.txt

4、启动后,还不能马上用新密码连接数据库,需要重启mysql数据库

posted @ 2016-12-21 07:12 云自无心水自闲 阅读(357) | 评论 (0)编辑 收藏

This is a general step that happens when m2e/m2eclipse (Maven integration for Eclipse) is installed, whether projects are actively using it or not.
这是因为m2eclipse(maven插件)要在启动时需要进行的一个步骤。

This step can be disabled through the Eclipse preferences: Window / Preferences / Maven / "Download repository index updates on startup". This option is on the main "Maven" preference page (not a child page). Just uncheck the box to prevent this from happening.
我们可以停止这个动作。方法:Windows -> Preferences -> Maven 取消勾选 Download repository index updates on startup

posted @ 2016-11-29 08:38 云自无心水自闲 阅读(1298) | 评论 (0)编辑 收藏

有好几个java library都可以实现这个功能,但是从pdf提取文本的一个问题是,提取出来的文本没有固定的顺序,不容易比较好的还原其格式。

我的做法是使用pdfclown来进行这项工作。官方网站是:https://pdfclown.org/ 先下载其最新版本。
参考其示例代码:https://pdfclown.org/2010/01/02/upcoming-0-0-8-whats-going-to-be-new/#more-30

使用这段代码,我们不仅可以得到文本的字符串,还能得到文本的页数和相对坐标。
我的思路是先把所有文本的字符串和坐标提取出来。然后排序,排序的顺序是纵坐标,然后横坐标。
这样排序完毕后,就能比较好的解决文本格式问题。

posted @ 2016-11-28 11:03 云自无心水自闲 阅读(377) | 评论 (0)编辑 收藏


1, 先定义一个input, 做为datepicker的容器。
<input type='text' class="form-control" id="dateTo" name="dateTo" required/>

2, 在后面加上glyphicon, 注意关键是label 中的for的id需要是前面定义的容器的id, 这样点击glyphicon的时候就会触发弹出日期选择框。
<label for="dateTo" class="input-group-addon"><span class="glyphicon glyphicon-time"></span></label>

posted @ 2016-10-10 19:57 云自无心水自闲 阅读(214) | 评论 (0)编辑 收藏

在日志文件中看到这个错误信息
Cause: java.sql.SQLException: #HY000

后来才知道这是因为数据库中有个别字段要求不能为空, 但是insert语句中没有提供数据,造成了这个错误。

关键是错误信息不明确直观,不容易知道是这个原因


posted @ 2016-09-28 13:13 云自无心水自闲 阅读(1052) | 评论 (0)编辑 收藏

    public void afterJFinalStart(){
        Configuration config = FreeMarkerRender.getConfiguration();
        config.setTemplateUpdateDelayMilliseconds( 2 );
        config.setAPIBuiltinEnabled( true );
    }

posted @ 2016-09-21 14:02 云自无心水自闲 阅读(233) | 评论 (0)编辑 收藏


中文版地址  https://angular.cn/

posted @ 2016-09-16 13:13 云自无心水自闲 阅读(2104) | 评论 (0)编辑 收藏

1, call ##002# to cancel "call diversion"

2, call 121600, choose option "2" to cancel "Active call catcher"

posted @ 2016-08-25 12:58 云自无心水自闲 阅读(150) | 评论 (0)编辑 收藏

1. 格式化XML的插件
可以安装“XML Tools", 安装完毕后,选择 插件->XML Tools->Pretty Print(XML Only - with line breaks)

2. 格式化JSON的插件
可以安装”JSON Viewer", 安装完毕后,选择 插件->JSON Viewer->Format JSON

3. 格式化SQL的插件
可以安装“Poor man's T-Sql Formatter", 选择 插件->Poor man's T-Sql Formatter->Format T-Sql Code

posted @ 2016-08-12 15:14 云自无心水自闲 阅读(1049) | 评论 (0)编辑 收藏

 
使用的工具

1. Apache HttpClient
2. Firefox + FireBug
3. Burp Suite ( https://portswigger.net/burp ) + Firefox FoxyProxy

Firefox + FireBug 主要用于查看渲染出的页面中的信息(比如:表单项的名称,节点ID等等)
Burp Suite 主要用于动态拦截页面的交互,查看Ajax的调用。
HttpClient 用于最后程序的编制。搞清楚了网页交互的过程,就可以自主决定程序需要包含的内容。
在实际网页中,可能需要点开数级菜单,才能最后看到需要的内容。
但是在程序中,可以直接跳到最后一步。

posted @ 2016-06-05 19:00 云自无心水自闲 阅读(195) | 评论 (0)编辑 收藏

1. 表格文字右对齐 
 <table>
<tr>
    <td><p style="text-align:right;margin:0;padding:0">文字右对齐</p></td>
    <td>文字左对齐</td>
</tr>
</table>

2. 表格边缘的margin 需要在表格外再套一个div
<div style="margin:10px">
    <table>
    ......
    </table>
</div>

3. btn-toolbar class can put a margin between 2 "pull-right" buttons
        <div class="row">
            <div class="col-md-2"></div>
            <div class="col-md-8 btn-toolbar">
                <input type="submit" class="btn btn-warning pull-right" value="Submit">
                <input type="button" id="profilePassBackBtn" class="btn btn-info pull-right" value="Back">
            </div>
            <div class="col-md-2">
            </div>
        </div>

posted @ 2016-05-31 11:39 云自无心水自闲 阅读(374) | 评论 (0)编辑 收藏

 AngularJS 2.0 已经发布了Beta版本,相信正式版不久以后就会发布了。

下面是官网上的新功能介绍:

1. 更快更高效。AngularJS 2 将会比 AnuglarJS 1 快很多。因为它会支持:从远程胳快速加载、离线编译以便于更快启动、以及超快的变动检测和为使滚动更平滑的视图缓存等等。

2. 更加简单清晰。语法将会显得更加自然,易于编写

3. 跨越平台。无论是台式机、手机浏览器、安卓、IOS平台,AngularJS都能提供相应的支持。

4. 无缝从 AngularJS 1 升级到 2

5. 简便的开发。支持各种开发语言,ES5, TypeScript, Dart

6. 全面完备的路由。 方便地映射URL到应用组件,并提供多种高级功能,比如:嵌套和邻接路由,支持卡片栈导航、动画过渡、手机用户延迟加载等等

7. 依赖注入。

8. 旧浏览器的良好支持

9. 动画效果 (仍在开发中)

10. 国际化支持(仍在开发中)

posted @ 2016-04-18 20:09 云自无心水自闲 阅读(260) | 评论 (0)编辑 收藏

  1. Go to web project properties.
  2. Deployment Assembly (Left).
  3. Add > Select project > Select your lib project > Check "Assemble projects into the WEB-INF/lib folder of the web application" if not checked > Finish.

posted @ 2016-04-13 10:35 云自无心水自闲 阅读(168) | 评论 (0)编辑 收藏

 使用酷狗就可以转换。
右键点击歌曲 ,工具,格式转换。
唯一要注意的是要先登录。

posted @ 2016-03-17 20:20 云自无心水自闲 阅读(1589) | 评论 (0)编辑 收藏

今天把commons dbcp 和 pool都升级到2.x, 结果发现不能正常的工作,卡在new BasicDataSource()上了.
后来才发现原因是因为没有加入commons-logging的jar文件

几个注意点:
1. commons dbcp2.x 和 commons pool需要同时升到2.x
2. dbcp 2.x要运行在java 7以上 
3. mysql connector要5.1.11以上
4. 需要有commons-logging的包,我使用的是slf4j, 就需要加一个jcl-over-slf4j

posted @ 2016-02-09 11:44 云自无心水自闲 阅读(611) | 评论 (0)编辑 收藏

Error
com.jcraft.jsch.JSchException: The cipher 'aes256-cbc' is required, but it is not available.
or
Caused by: java.security.InvalidKeyException: Illegal key size


posted @ 2016-02-05 13:51 云自无心水自闲 阅读(264) | 评论 (0)编辑 收藏


我在网上搜索了一下如何使用Selenium下载文件,其中确实有几篇文件介绍了实现的方法。
但是其主要思想都是使用httpClient或者URL获得InputStream, 然后保存到文件中。
但是,其中的问题是用户登录的Session不能维持。

我发现了一个简单的方法。
直接使用WebDriver.get, 示例如下:

webDriver.get("https://website.com/login");
WebElement element = driver.findElement( By.id( "userID" ) );
element.sendKeys( "user01" );

element = driver.findElement( By.id( "passwd" ) );
element.sendKeys( "password" );

element = driver.findElement( By.name( "Login" ) );
element.submit();

webDriver.get("https://website.cm/download.do?start=xx&end=yy");
String source = webDriver.getPageSource();

这个source就是我们想保存的要下载的内容。
只要把这个String写到一个文件中,就实现了文件下载的目的

posted @ 2016-01-28 18:06 云自无心水自闲 阅读(465) | 评论 (0)编辑 收藏

     摘要: 在我的上一篇文章中介绍了如何进行GPG加密解密。
加密解密的基本操作流程是,用户使用公钥对明文进行加密,解密方使用私钥对密文进行解密。

在实际应用中,除了加密保证文本内容不泄露外,同时还要考虑能够验证密文发送方的身份,比较普遍使用的方法就是签名。
本文主要对具体的方法进行介绍并附上源代码。  阅读全文

posted @ 2015-12-11 21:40 云自无心水自闲 阅读(1257) | 评论 (0)编辑 收藏

Java程序中访问拥有全部读写权限的目录相对比较简单,和普通的目录没有什么差别。
但是要访问一个需要用户和密码验证的目录就需要一点点小技巧了。
这里介绍一个开源的库能够比较容易的实现这一需求。
1。 下载库文件:
 https://jcifs.samba.org/
下载的zip文件中, 不仅包含了jar文件,还有文档和示例。

2。拷贝jcif-1.3.18.jar到类路径中。

3。代码示例:
 1     String user = "your_user_name";
 2     String pass ="your_pass_word";
 3 
 4     String sharedFolder="shared";
 5     String path="smb://ip_address/"+sharedFolder+"/test.txt";
 6     NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass);
 7     SmbFile smbFile = new SmbFile(path,auth);
 8     SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile);
 9     smbfos.write("testing.and writing to a file".getBytes());
10     System.out.println("completed nice !");
说明: 如果有一个共享目录,比如: \\192.168.1.2\testdir\
那么smb的路径就是:smb://192.168.1.2/testdir/
NtlmPasswordAuthentication需要三个参数, 第一个是名,没有的话,填null, 第二个是用户名,第三个是密码

得到SmbFile之后,操作就和java.io.File基本一样了。
另外还有一些功能比如:
SmbFile.copyTo
SmbFile.renameTo
等等

posted @ 2015-11-20 14:03 云自无心水自闲 阅读(12920) | 评论 (0)编辑 收藏

先将my.default.ini改名为my.ini放到bin目录
命令行执行: mysqld --initialize --user=mysql --console
先执行以上命令, 生成库. 注意有个临时密码, 要记下来.

安装服务:mysqld.exe --install MySql5.7 --defaults-file=c:\mysql\mysql5.7\my.ini

然后启动服务. 
然后再命令行:
mysql -uroot -p
输入密码,
再输入: 
set password = password('root')
改密码成功, 然后就可以操作了.

posted @ 2015-11-09 15:25 云自无心水自闲 阅读(733) | 评论 (0)编辑 收藏

如果只是在beforeSubmit()中 调用$('#fieldname').val(2)是不能成功修改表单的值的。
因为此时ajaxForm已经把表单中所有的内容存储在arr之中了。

    $('#form1').ajaxForm({
        beforeSubmit: function(arr){
            for ( var i = 0; i < arr.length; i ++ ) {
                if ( arr[i].name == "fieldName1" ) {
                    arr[i].value = '新的值';
                }
            }
        }
    });
需要使用这种方式进行修改。

posted @ 2015-11-02 19:13 云自无心水自闲 阅读(1211) | 评论 (0)编辑 收藏

今天在运行myeclipse的时候,突然报nullPointerException.

具体的错误信息如下:

Message: Errors running builder ‘DeploymentBuilder’ on project XXX’.
Exception Stack Trace
java.lang.NullPointerException

解决方法:

1. Shut down the workspace.

2. Delete the file com.genuitec.eclipse.ast.deploy.core.prefs which is located at <workspace dir>/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.genuitec.eclipse.ast.deploy.core.prefs

3. Start the IDE.

posted @ 2015-10-21 09:21 云自无心水自闲 阅读(360) | 评论 (0)编辑 收藏

 
ipconfig /flushdns
ipconfig /registerdns
netsh winsock reset

重新启动电脑。

posted @ 2015-10-13 16:31 云自无心水自闲 阅读(1784) | 评论 (0)编辑 收藏

今天下载了Apache James 3.0 Beta 5, 文件名:james-server-app-3.0.0-beta5-20150627.102412-1076-app.zip
解压,运行run.bat

然后,注册domain
james-cli --host localhost adddomain example.com
添加用户
james-cli.bat --host localhost adduser test@example.com password

然后测试发送邮件,客户端显示发送成功,但是james服务器报错,找不到MimeConfig的无参数构造函数。
解决方法:
使用旧的mime4j的jar包替换james 3.0 beta5中自带的最新包。
beta5中自带的是0.8.0版,apache网站中可以下载到0.7.2
下载apache-mime4j-0.7.2-bin.zip, 将其中的apache-mime4j-core-0.7.2.jar, apache-mime4j-dom-0.7.2.jar复制到james\lib目录,
并将其更名覆盖原有的
apache-mime4j-core-0.8.0-20150617.024907-738.jar
apache-mime4j-dom-0.8.0-20150617.024927-735.jar
重新启动james, 发送邮件, 成功。

posted @ 2015-10-08 08:45 云自无心水自闲 阅读(3273) | 评论 (0)编辑 收藏

     摘要: 解压/生成有密码保护的压缩文件, 研发过程中,作者研究了压缩文件格式文档: http://www.pkware.com/documents/casestudies/APPNOTE.TXT,并且参考了7-zip的实现。
  阅读全文

posted @ 2015-08-19 10:16 云自无心水自闲 阅读(9942) | 评论 (0)编辑 收藏

     摘要: 花了两天时间终于把windows10安装好了,以下是我的一些个人的体会
  阅读全文

posted @ 2015-08-03 18:56 云自无心水自闲 阅读(6247) | 评论 (0)编辑 收藏

在JfinalConfig的继承类中,
configConstant() 需要设置me.setDevMode(true);

1. 只有在DevMode下,才能禁止freeMarker的缓存。
Configuration config = FreeMarkerRender.getConfiguration();
config.setTemplateUpdateDelayMilliseconds(0);
才会生效


2. 这时才会有JFinal Action Report日志输出

posted @ 2015-07-24 19:58 云自无心水自闲 阅读(413) | 评论 (0)编辑 收藏

本文将简单介绍如何使用PowerMock和Mockito来mock
1. 构造函数
2. 静态函数
3. 枚举实现的单例
4. 选择参数值做为函数的返回值
5. 在调用mock出来的方法中,改变方法参数的值

一点简要说明:Mockito其实已经可以满足大部分的需求,但是它的实现机制是使用cglib来动态创建接口的类的实例。但是这种实现方式不能用于构造函数和静态函数,因为那需要使用类的字节码(比如使用javassist). 所以我们才需要结合使用PowerMock.

1. mock构造函数, 如果有代码没有使用DI注入依赖实例,在单元测试中可以使用PowerMock来模拟创建对象。
注意的开始两行的2个注解 @RunWith 和 @PrepareForTest
@RunWith比较简单,后面始终是PowerMockRunner.class
@PrepareForText后面需要加的是调用构造函数的类名,而不是有构造函数的类本身。
在下面的例子中,我们要测试的类是:Helper, 在Helper类中调用了Somthing类的构造函数来创建实例。
@RunWith(PowerMockRunner.class)
@PrepareForTest(Helper.
class)
public class HelperTest {
  @Mock
  
private Something mockSomething;
      
  @InjectMocks
  
private Helper helper;
      
  @Test
  
public void doSomething() throws Exception {
      String argument 
= "arg";
          
      PowerMockito.whenNew(Something.
class).withArguments(argument).thenReturn(mockSomething);
         
      // 调用需要测试方法
      helper.doSomething(argument);
         
      // 进行验证
      verify(mockSomething).doIt();
  }
}


public class Helper {
  public void doSomething(String arg) {
      Something something = new Something(arg);
      something.doit();
  }
}


2,mock 静态函数, 单例模式就是一个典型的会调用静态函数的例子。 注意要点与mock构造函数相同。
class ClassWithStatics {
  
public static String getString() {
    
return "String";
  }

  
public static int getInt() {
    
return 1;
  }
}

@RunWith(PowerMockRunner.
class)
@PrepareForTest(ClassWithStatics.
class)
public class StubJustOneStatic {
  @Test
  
public void test() {
    PowerMockito.mockStatic(ClassWithStatics.
class);

    when(ClassWithStatics.getString()).thenReturn(
"Hello!");

    System.out.println(
"String: " + ClassWithStatics.getString());
    System.out.println(
"Int: " + ClassWithStatics.getInt());
  }
}

3。mock枚举实现的单例
SingletonObject.java
public enum SingletonObject { 
    INSTANCE
;
    private
int num;
    protected
void setNum(int num) {
        this.num = num;
    }
    public int getNum() {
        return
num;
    }

}
SingletonConsumer.java

public class SingletonConsumer {
    public String consumeSingletonObject() { 
        return
String.valueOf(SingletonObject.INSTANCE.getNum());
    }
}
SingletonConsumerTest.java
@RunWith(PowerMockRunner.class) 
@PrepareForTest({SingletonObject.class})
public class SingletonConsumerTest {
    @Test public void testConsumeSingletonObject() throws Exception {
        SingletonObject
mockInstance = mock(SingletonObject.class);
        Whitebox
.setInternalState(SingletonObject.class, "INSTANCE", mockInstance);
        when
(mockInstance.getNum()).thenReturn(42);
        assertEquals
("42", new SingletonConsumer().consumeSingletonObject());
    }
}
4。返回参数值做为函数返回值。
mockito 1.9.5之后,提供一个方便的方法来实现这个需要,在这之前可以使用一个匿名函数来返回一个answer来实现。
when(myMock.myFunction(anyString())).then(returnsFirstArg());
其中returnsFirstArg()是org.mockito.AdditionalAnswers中的一个静态方法。
在这个类中还有其他的一些类似方法
returnsSecondArg()
returnsLastArg()
ReturnsArgumentAt(int position)

5. 在调用mock出来的方法中,改变方法参数的值
when( myMock.someMethod( any( List.class ) ) ).thenAnswer( ( new Answer<Void>() {
    @Override
    
public Void answer( InvocationOnMock invocation )
            
throws Throwable {
        Object[] args 
= invocation.getArguments();
        List arg1 
= (List)args[0];
        arg1.add(
"12345");
        
return null;
    }
} ) );



Verifying with generic parameters
verify(someService).process(Matchers.<Collection<Person>>any());
verify(adunoMasterBaseProcessor).processBinFiles( anyListOf(File.class) );

posted @ 2015-06-16 21:27 云自无心水自闲 阅读(18451) | 评论 (0)编辑 收藏

Oracle提供的JDK其实已经自带一定程度的热加载功能,但是如果你修改了类名,方法名,或者添加了新类,新方法的话。
Tomcat都需要重新启动来使得刚才的更改生效。
而JRebel和springloaded都能有效地解决这个问题。其中springloaded是开源软件,可以免费使用,尤其难得。
其主页:https://github.com/spring-projects/spring-loaded
在官方页面的简单介绍中,作者只讲述了如何在java程序中应用springloaded,而没有说明如何在tomcat中进行配置。
本文将简要进行介绍。

1,下载springloaded到本地目录,比如:c:\temp\springloaded-1.2.3.RELEASE.jar

2. 修改tomcat的应用,禁止tomcat自己的热加载,方法是在META-INF目录下创建context.xml文件,里面包含如下语句,关键便是其中设置reloadable为false
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" reloadable="false" />

3.在运行环境中添加springloaded的jar文件,在eclipse中右键点击项目,run as->run configuration
在弹出的窗口中,选择Arguments标签,在vm arguments的末尾添加:
-javaagent:C:\temp\springloaded-1.2.3.RELEASE.jar -noverify
点击应用按钮。

以上便完成了所有的配置,步骤并不复杂。

posted @ 2015-06-11 21:59 云自无心水自闲 阅读(7700) | 评论 (0)编辑 收藏

java wrapper是一个可以用于将java应用程序包装成windows服务的工具。
并且可以通过简单的配置来允许使用visualVM进行监控。

配置方法:
在wrapper.conf中添加如下3行

wrapper.java.additional.1=-Dcom.sun.management.jmxremote.port=9898 #这里的端口号可以自行选择。
wrapper.java.additional.2=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.3=-Dcom.sun.management.jmxremote.authenticate=false

修改完毕保存后重新启动服务。

打开visualVM, 在菜单中选择 file->Add JMX Connection。
在弹出窗口中,connection一项中输入: localhost:9898 即可。

此配置对于jconsole也同样有效。

posted @ 2015-06-11 14:09 云自无心水自闲 阅读(4804) | 评论 (0)编辑 收藏