- 浏览: 163802 次
- 性别:
最新评论
-
cel533:
大侠这个怎么用啊,我用launcher控制台什么都没有
Karaf在Eclispe中的启动环境 -
sswh:
import java.io.ByteArrayInputSt ...
证书制作 -
sswh:
pom.xml
<?xml version=" ...
Karaf在Eclispe中的启动环境 -
kkkwoai:
你好,有问题请教一下我用来做ppt解析为图片,放在web服务器 ...
DOC文档转PDF -
oliverjonas:
解压源码是乱码
ActiveMQ学习笔记之四--启动嵌入式Broker(纯代码方式)
文章列表
JMS中的基本概念
ConnectionFactory 接口(连接工厂) 用户用来创建到JMS提供者的连接的被管对象。JMS客户通过可移植的接口访问连接,这样当下层的实现改变时,代码不需要进行修改。 管理员在JNDI名字空间中配置连接工厂,这样,JMS客户才能够查找到它们。根据消息类型的不同,用户将使用队列连接工厂,或者主题连接工厂。
监控broker(activemq web console)
把activemq-web-console-5.9-20131011.032620-114.war部署到tomcat下面:
另外增加几个JVM的启动参数:
-Dwebconsole.type="properties"
-Dwebconsole.jms.url="tcp://localhost:61616"
-Dwebconsole.jmx.url="service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"
-Dw ...
监控broker(JMX)
首先,broker要启用JMX支持:
broker.setUseJmx(true); //启用JMX监控
运行Jconsole,远程连接输入:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
启动嵌入式Broker(从配置文件获取启动参数)
BrokerService broker = BrokerFactory.createBroker("xbean:resources/activemq.xml");
activeMQ的配置文件采用xbean方式配置,并且依赖于Spring和xbean;
看一下activemq-spring的依赖关系:
启动嵌入式Broker(纯代码方式)
Broker最小依赖的JAR包集合:
手动启动Broker:
BrokerService broker = new BrokerService();
broker.addConnector("tcp://localhost:61616");
ActiveMQ的模块划分
打开源码目录,可以初步浏览一下ActiveMQ的模块结构:
查看一下activemq-broker模块的maven配置文件,了解初步的依赖关系:
2、ActiveMQ初步印象
找到F:\apache-activemq-5.9.0\bin\activemq.bat文件,在第一行设置:set java_home=…
启动activemq…
打开http://localhost:8161/,进入web控制台...
选择进入旧的控制台吧,帐号密码:admin/admin…
1、ActiveMQ下载:
http://activemq.apache.org/
当前最新版本是5.9.0(2013-11-8)
http://activemq.apache.org/activemq-590-release.html
有源代码可以一并取下来。
下载Web-console以及源代码:
Eclipse中的TCP/IP Monitor还是很有用的。每次打开配置都要想半天,哪个端口该配置哪个..
下图纯为备忘。。
简单的Log4J配置
- 博客分类:
- java
在搭建一些简单的测试环境时,经常收到下面的提示:
引用log4j:WARN No appenders could be found for logger (org.apache.camel.impl.DefaultCamelContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
如果懒得再去弄一个Log4J配置文件的话,可以下面这样:
static ...
unsafe脚本怎样才是安全的??除了脚本对已有对象应该限于只读操作,
并且不应该持有对象的引用外,暂时所能想到的,先列几条吧:
1、启用unsafe模式:
修改BTrace启动参数 -Dcom.sun.btrace.unsafe=true
BTrace脚本注解:@BTrace(unsafe = true)
2、BTrace脚本类的ClassLoader为引导类加载器;
被跟踪的类的加载器仍为原类加载器不变;
agent在加载脚本类之前会对脚本类进行修改,
包括修改脚本方法名称、@TLS变量修改为ThreadLocal等;
3、BTrace脚本编译后,@OnM ...
@OnMethod注解用来匹配拦截的方法,Location用来指定在方法的某个位置或者某个动作时触发拦截代码。
常用的Location:
Kind.ENTRY(缺省的Location,当进入方法时,代码添加在方法第一行)
Kind.RETURN(当从方法返回时,如果方法有多个返回点,则每一个返回点前都会执行)
Kind.ERROR(当方法执行异常时,当方法执行过程中抛出异常,会触发)
实际生成的代码形如:try{...}catch(Throwable e){...}
方法匹配的原则:(方法名和type与被拦截方法的方法签名一致,如果type缺省,则匹配全部同名方法;当然,还必须符合方法 ...
BTRace1.2.2版本
@OnMethod(clazz = "+my.Command", method="execute")
对子类的匹配(怀疑)存在BUG。
即:加载Agent之前的已载入的Class被拦截了,但Agent加载之后的Class没有拦截。
从源代码看应该是这样,涉及到子类匹配检查的主要两个变量:
hasSubclassChecks :是否需要检查子类匹配,如果需要的话,
所有通过ClassLoader.defineClass()加载的类,会被注入一段静态初始化代码:
{
BTraceRuntime.retransform(L ...
以下基于BTrace1.2.2
[url]http://kenai.com/projects/btrace/downloads/directory/releases
[/url]
BTrace类的增强分两部分:
Agent载入之前已加载类的转换;
Agent载入之后新定义类的转换;
其中,Agent载入之前已加载类的转换在:
com.sun.btrace.agent.Main.handleNewClient(final Client client)方法中处理;
关键的处理步骤:
// 注册类转换器---即:ClassFileTransformer
client.registerTra ...
如何对付一六八培训网的垃圾邮件
- 博客分类:
- 非技术
曾经一度为168培训网的垃圾邮件极度烦恼。
由于168的垃圾邮件每次都伪造发件人地址、发件标题、发件内容经常打包为Zip文件、PDF文件等。这让常规的邮件过滤方法完全失去效果。(在这儿,尤其要BS一下那些邮件服务器、或者邮件客户端提供的按发件人屏蔽垃圾邮件的黑名单方法,真是白痴到极点。)
后经朋友友情提醒,才发现利用邮件WEB客户端的邮件分类功能对付168的垃圾邮件超级有效。
前提:
邮件服务器提供有邮件分类功能(或者类似功能);
自己的邮箱只接受特定域的邮件。
168培训网自身的邮箱为peixun168@hotmail.com,如果有把握所有已知邮件排除后,没有什么可保密的内容的 ...