sidebar 隐藏/显示

花了一下午做了一个EJB的dummy 组件,记一笔先。

服务器为JBOSS

把开发Bean包命名为DummyEJB.jar, 测试包为DummyEJBServletTest.war.

测试包必须要以war为后缀,JBOSS会自动把之识别成web应用deploy 包。

大致文件结构如下

1. DummyEJB.jar
        |___com.test.ejb.dummy
        |___META-INF
                  |____MANIFEST.MF
                  |____jboss.xml (存放ejb name 和destination jndi name)
                  |____ejb-jar.xml(存放ejb name, 要和上面的保持一致,class name)

以上两个xml文件的具体配置可看以前存的一个例子。 

2. DummyEJBServletTest.war (测试包)
             |____META-INF
             |          |____MANIFEST.MF
             |____WEB-INF
                        |____classes (存放编译好了的classes)
                        |____lib (import的包可以放在此处)
                        |____web.xml (servlet name, class name, servlet mapping)

这两个包可直接copy至 $JBOSS_HOME\server\default\deploy下。如果还有更多的包,可以考虑集成ear包,这个容我以后再摸索。

3. 如要添加新的JMS  queue,需要在$JBOSS_HOME\server\default\deploy\jms下的 jbossmq-destination-service.xml里添加新的queue名并指定类型。

以上只是一个简单的ejb运行构架。

暂时先记这么多吧。

2007-09-13

JMeter 入门 - [学习笔记]

应用范围

Apache JMeter 是一个测试web 应用和静态或者动态资源如文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源的纯JAVA应用程序。它可以模拟服务器和网络上的负载,以测试其受压能力,分析服务在不同负载情况下的性能情况。

 

使用环境

JMeter可在Apache JMeter的下载页上获取, 现在最新版本为2.3。把下载下的压缩包解压即可。根据测试组件的不同,要添加相应的jar包。新增加的jar包均可放入%JMETER_HOME/lib/ext中。

比如要运行BeanShell script,就需要把添加bsh-2.0b4.jar包添加入扩展包文件夹内。

 

Create a Test Plan 

一般来说,构成一个完整的Test Plan至少需要以下几个组件:

1. Thread Group

每个Test Plan里至少包含一个Thread Group。在此可以定义循环次数和使用用户数目。

2.  Samplers

有HTTP, FTP, or LDAP 等requests的配置,利用此可进行测试。

3. Listeners 

查看测试的结果。

在定制Test Plan的时候有个很重要的Config  element,可以对CSV文件进行导入,管理http的cookies等等。

 

具体Elements和Config的介绍可以查阅以下两篇文档

Using  JMeter to Performance Test Web Services

使用JMeter进行性能测试

 

本人使用的小经验

1. 善用BeanShell Script

既然JMeter支持BeanShell,那何乐而不为呢?比如测试步骤就可以用之写如log文件,这样更有助于debug。

有一点要注意的是BeanShell支持的变量表示,对JMeter变量的读取和赋值要分别使用vars.get("JMeter变量名")和vars.put("变量名",值), 详细的说明可以参考JMeter的用户手册

2.  JMeter的帮助文件和Function产生器

JMeter帮助菜单集成到了鼠标右键,在创建了一个element后,如果对此不熟悉,可以选右键的help,里面叙述得很详细。

Function帮助器也是一个很好的工具,当对函数的格式极其参数不太了解时,可按这个工具上的提示一步步生成,不怕犯漏掉重要的括号之类的语法错误。

3. While/IF Controller

在if和while controller里需要输入判断条件句。这里我发现,JMeter并不支持boolean变量,而是判断当前条件句返回的字符串,如果为true就判断条件成立,反之false就结束当前controller。

所以这一点可以灵活运用。

举个例子,读取csv文件里的内容并对其进行操作时,需要采用while controller。在CSV文件的最后一行也可添加FALSE这个字符串来告诉while controller文件已经结束了,这样在条件判断句里可以直接写上和CSV文件关联的变量名即可,不然则需要使用javaScript(${__javaScript("${Variable}"="EOF", dummy)})或者BeanShell Script才能让While Controller正常工作。 但在if controller里可以直接填入"${Variable}"!="EOF"。 这里EOF在JMeter的properties文件里定义成CSV文件内容结束符。

4. JUnit测试

添加JUnit测试时,需要将压缩成jar包的TestCase文件放入%JMETER_HOME/Junit/(手头没有安装,凭记忆写的。)同时将TestCase调用到的其它必要的jar包放入JMeter的lib扩展文件夹内,否则不能正常运行。

5. Webservice SOAP Sampler

这个里面需要用到SOAP/XML-RPC知识,相关语法和表达可参考文档XML-RPCUsing SOAP in HTTP

查看测试结果时可选用Listeners里的View Results Tree,可以看到soap的response。

 

===============

暂时就写这么多吧,现在还处于摸索阶段 ,用到JMeter的地方有限得很。

 

看资料也有一段日子了,大约也或多或少对JMS,EJB在JBOSS下的应用有了些了解,现记下来,以作资料存档之用。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

JBoss作为一个运行EJBJ2EE应用服务器,现在已经发展成基于J2EE的一个web操作系统了。虽然它是一个很优秀的平台,但配置和使用并没有图形界面,需要手动对配置文件进行调整,以实现合适的配置。

 JBOSS里还集成了Tomcat容器,这样让它成为了专业的JSP/servlet容器和Web服务器。在开发实例中,ejb可直接放入deploy下。并不需要其它的特殊设置,因为配置在ejb.jar的包里的ejb-jar.xml和jboss.xml里设置好了。

如果要使用jms服务的话,就要在EJB包里对message driven bean进行配置。

 Ejb-jar.xml

<message-driven>

      <ejb-name>TestMessage</ejb-name>

      <ejb-class>test.TestMessageBean</ejb-class>

      <message-selector></message-selector>

      <transaction-type>Container</transaction-type>

      <message-driven-destination>

        <destination-type>javax.jms.Queue</destination-type>       

      </message-driven-destination>

</message-driven>

jboss.xml

  <message-driven>

      <ejb-name>TestMessage</ejb-name>

      <configuration-name>Standard Message Driven Bean</configuration-name>

      <destination-jndi-name>queue/testQ</destination-jndi-name>

    </message-driven>

 在jboss执行ejb时会生成一个临时的JNDI名为queue/testQ的queue,在jboss服务器停止后,该queue里的内容不会保存

14.08.2007 Update : 试验了一下,在JBOSS重启后此类queue里的messages依然保留,究其原因可能是因为jboss使用了数据库来存储queue里的信息。

而在jbossMQ-destinations-service.xml里添加一个queue的话可以实现防crash 或者断电保护,因为通过这种方式配置的queue是persistent的。

 

附上两个有参考价值的link: 

JBOSS下EJB配置和部署

手动部署EJB
 

XXXXXXXXXXX

暂时先写到这里,感觉东西太多,还没想好怎么整理。 

 

【好奇在前】

之前上youtube瞅了瞅,发现每个视频底下都有 links,点进去,发现是一些blog或者forum的链接,也就是引用了这个视频的网页。有哪位高人能解惑一下youtube是怎么实现这个的?

我想不明白的是网络用户查看带有链接的网页时,对youtube发起请求的是浏览器这端,那youtube是怎么知道前一个链接地址的?莫非是google收购了youtube之后做的技术支持?

 

【小结开始】 

断断续续也接触了快两个月的AXIS了,虽然不是很清楚具体细节,但也大概知道是怎么一回事了。下周又要开始接触新的东西,AXIS可能会放一两个月,所以趁还犹有印象,赶紧记下来。

 

AXIS是Apache公司开发的一个web service,可以运行在tomcat上。最开始是为SOAP搜索引擎,但不仅仅局限于此。基本介绍见此文章Apache Axis2 User's Guide。目前最新的版本为AXIS2 1.2。实际上AXIS 1.4现在用得还很广泛。这两者的区别请参考此文件Migrating from Apache Axis 1.x to Axis2

在这里有一个知识点很重要,即WSDL。我们可以把WSDL看作是web service的一个接口,在这个接口要里定义好service name等各个特性和service的各个方法。如果甲方和乙方合作开发一个web service,那么甲方就可以只提供一个接口即可,乙方拿到接口后再行开发。

(下面的内容仅局限于我需要使用的部分,其它部分没有怎么关注) 

AXIS可以实现WSDL的生成,然后发布到服务器上。

也可以根据WSDL生成客户端 java code(有好几种方式,我选用的是stub方式) ,code里各个class的名字和内容可参考此文章Apache Axis2 Advanced User's Guide。然后在*impl.java里开发好代码,再发布web service。 发布方式在AXIS 1 和AXIS2略有不同。AXIS 1 里需要输入% java org.apache.axis.client.AdminClient deploy.wsdd (此处deploy.wsdd为wsdl2java类自动生成。)发送到服务端,然后将开发好的classes文件放入%AXIS_HOME%下的classes文件夹内,或者讲classes文件压缩成jar文件,复制入lib。而AXIS2只需将压缩好的aar包放入%AXIS2_HOME%下的service的目录即可。

在AXIS1.4的技术文档里Axis Developer's Guide有关于和JUnit一起使用时出现异常的问题讲述。(当时这个异常困扰了我许久,结果到后来才发现AXIS1.4里有提到过。 )这个也备忘一下,虽说eclipse下没有出现这些异常,但也需要知道是什么原因。

(搬家弄了一天了,没力气写了= = 不过想写的也写得差不多了,只等把以前写的文档拷回家就可以了)

 

PS:因为下一阶段要用到JMS,所以这篇文章JMS Transport可能会有用,先做个备份。

共1页 1