itstarting:IT进行时

想自己所想,做自己所爱

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  28 随笔 :: 3 文章 :: 55 评论 :: 0 Trackbacks

#

 

ActiveMQ 5.0的文档实在是太少了,尤其是集成Spring2.x方面更少。

        下面是配置方面的心得:
        一、服务器端配置:

 总体参考官方网站进行整合,差点害死人,不停的出现各种配置错误,后来经过google查询各种邮件列表,才发现xsd使用不当。        

<?xml version="1.0" encoding="UTF-8"?>
<beans 
  
xmlns="http://www.springframework.org/schema/beans" 
  xmlns:amq
="http://activemq.org/config/1.0"
  xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"
>


</beans>

这个才是正确的,两点:

1、去掉:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

2、用这个而不是那个:

这个:

           http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd

那个:     
     http://activemq.apache.org/snapshot-schema/activemq-core-5.0-SNAPSHOT.xsd


        完整的配置如下:        
        applicationContext-activeMQ.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans 
  
xmlns="http://www.springframework.org/schema/beans" 
  xmlns:amq
="http://activemq.org/config/1.0"
  xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"
>

  
<amq:broker useJmx="true" persistent="true"> 
    
<amq:persistenceAdapter> 
        
<amq:jdbcPersistenceAdapter dataSource="#mysql-ds"/> 
      
</amq:persistenceAdapter> 
    
<amq:transportConnectors> 
       
<amq:transportConnector uri="tcp://localhost:0"/> 
    
</amq:transportConnectors> 
   
</amq:broker>
  
  
<!-- MySql DataSource Setup -->
  
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
    
<property name="username" value="activemq"/>
    
<property name="password" value="activemq"/>
    
<!--
    <property name="poolPreparedStatements" value="true"/>
-->
  
</bean>
</beans>


        二、web.xml配置: 

    <!--activeMQ-->
    
<context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>
            /WEB-INF/applicationContext-activeMQ.xml 
            /WEB-INF/applicationContext-jms.xml 
        
</param-value>
    
</context-param>

    
<listener>
        
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    
</listener>



        三、客户端配置此处仅供参考,还未曾具体实战确认):
        applicationContext-jms.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans 
  
xmlns="http://www.springframework.org/schema/beans" 
  xmlns:amq
="http://activemq.org/config/1.0"
  xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"
>
  
<!-- ActiveMQ destinations to use  -->
  
<amq:queue id="destination"  physicalName="org.apache.activemq.spring.Test.spring.embedded"/>

  
<!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
  
<amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost"/>  
  
<!-- Spring JMS Template -->
  
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    
<property name="connectionFactory">
      
<!-- lets wrap in a pool to avoid creating a connection per send -->
      
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
        
<property name="targetConnectionFactory">
          
<ref bean="jmsFactory" />
        
</property>
      
</bean>
    
</property>
    
<property name="messageConverter">
        
<ref bean="dynamicMessageConverter"/>
    
</property>
  
</bean>
  
  
<bean id="dynamicMessageConverter" class="com.tuanzi.message.mq.impl.DynamicMessageConverter"/>  

  
<bean id="consumerJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    
<property name="connectionFactory">
        
<ref bean="jmsFactory"/>
    
</property>
    
<property name="messageConverter">
        
<ref bean="dynamicMessageConverter"/>
    
</property>
    
<property name="receiveTimeout">
        
<value>10000</value>
    
</property>
  
</bean>

  
<!-- a sample POJO which uses a Spring JmsTemplate -->
  
<bean id="simpleMessageProducer" class="com.tuanzi.message.mq.impl.SimpleMessageProducer">
    
<property name="jmsTemplate">
      
<ref bean="jmsTemplate"></ref>
    
</property>
    
<property name="destination">
      
<ref bean="destination" />
    
</property>
  
</bean>

  
<!-- a sample POJO consumer -->
  
<bean id="simpleMessageConsumer" class="com.tuanzi.message.mq.impl.SimpleMessageConsumer">
    
<property name="jmsTemplate" ref="consumerJmsTemplate"/>
    
<property name="destination" ref="destination"/>
  
</bean>
</beans>


    TODO:
    1、客户端的配置需要实战后进行进一步的确认、更新;
    2、后期视情况增加一篇《Spring2.x与ActiveMQ5.0成功集成的心得(实战篇)》


    主要参考:

http://activemq.apache.org/spring-support.html

http://activemq.apache.org/xml-reference.html

posted @ 2008-01-20 23:41 IT进行时 阅读(3422) | 评论 (3)编辑 收藏

ORA-00600是Oracle的内部错误。何谓内部错误,就是Oracle也认为是uncheck的错误了。

我是在执行查询时出现了这样的提示,用的是9.2.0.1版本,我查了好长时间,当时的第一反应就是:完了,Oracle的BUG,要打补丁了。

后来找到了一个论坛,这里:http://oracle.ittoolbox.com/groups/technical-functional/oracle-db-l/ora-00600-internal-error-code-arguments-20084-50364303-23-50364303-23-325619?cv=expanded#。有高人指点,终于解决了。


我的解决方法很简单,变更了一个参数:
STAR_TRANSFORMATION_ENABLED从原来的TRUE改为FALSE。

只能知其然不知其所以然了。
posted @ 2007-08-31 09:29 IT进行时 阅读(23226) | 评论 (6)编辑 收藏

jmagick是什么?不用我说了吧。

jmagick的安装(基于windows),精简版步骤:
1、下载jmagick-win-5.5.7-Q8.zip,并把jmagick.jar放到应用的lib下,jmagick.dll拷贝到SYSTEM32下;
2、安装ImageMagick-5.5.7-Q8-windows-dll.exe软件
3、重新启动机器
麻烦点,但对图片的处理能力,确实超乎想象的(不过用6.2.6版本频频出现JVM Crach,吓死)

jmagick的使用,我只用了图片缩放,还可以。
代码如下:
   System.setProperty("jmagick.systemclassloader", "no");//这个没什么好说的,照办就是了
   ImageInfo info = new ImageInfo(fromFileName);
   MagickImage fromImage = new MagickImage(info);
   Dimension dim = fromImage.getDimension();
   double w = dim.getWidth();
   double h = dim.getHeight();
   int toHeight = (int)(h*toWidth/w);//按宽度比例缩放
      
   MagickImage toImage = fromImage.scaleImage(toWidth, toHeight);//缩放操作
   toImage.setFileName(toFileName);//设置输出的文件名
   toImage.writeImage(info); //保存


过程中发现最新版本的诸多问题,要么NoClassDefFoundError要么Can't find dependent libraries,简直不胜其烦。

后来降级到5.5.7,就好了,说明IT人唯最新版本是从的想法不一定正确。

说心里话,过程中曾经出现过多次JVM crach,现在还有心理阴影。
posted @ 2007-07-26 12:53 IT进行时 阅读(5795) | 评论 (4)编辑 收藏

    对于开发和实施人员来说,也许大家经常会碰到这样的对话:

    实施工程师:系统有问题了,是哪里哪里(省略字若干+若干界面截图)
    开发工程师:不可能,我这边还原了整个环境,包括数据库、代码和中间件……
    实施工程师:这边是weblogic,你那边是?
    开发工程师:我的是Tomcat,但Tomcat和weblogic的差异呢,不知道……

    然后就没有结果,因为我们的个人电脑真的无法或者难以承受weblogic或者websphere之重。

    怎么办呢,其实我们可以用远程调试的方法:
   
    三步配置远程调试:
    一、对于TOMCAT:
      1、打开catalina.bat,并加入:
        SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5555
      2、配置Eclipse,如下图(此时Port与上面的address一致,是5555):

 
    3、如果Tocat已经起来(注意,可能在另外的机器上),那点击debug,即可进行与本地服务一样的调试过程。

    二、对于Weblogic:
      1、打开startWebLogic.cmd,并调整执行java命令的地方:
%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
调整为
@REM ORG : %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
@REM Surport Remote Debug :
set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_Socket,address=4000,server=y,suspend=n
%JAVA_HOME%\bin\java %JAVA_VM% %JAVA_DEBUG% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
      2、其他配置类似Tomcat,如下:
    
    3、同样,如果weblogic已经起来(注意,我上面的例子就是weblogic不在本机上,而在于另外的机器上),那点击debug,即可进行与本地服务一样的调试过程,如下:

    大家也许会问:这样调试会不会影响客户使用?当然会影响,如果一旦hit了断点,则整个应用会被挂起。那怎么样才能尽可能的进行调试呢?方法还是有的:
    1、如果是tomcat,重新复制一份tomcat,修改一下端口,然后起来后调试,此时整个环境都类似了,调试起来非常方便;
    2、如果是weblogic,重新建立一个新的domain即可,互不干扰;
    3、如果是websphere,呵呵,没试过,留给大家的作业。

    原理?好奇的人还会问,其实就是jdwp(Java(tm) Debug Wire Protocol),有兴趣就google一下吧。

posted @ 2007-06-13 16:22 IT进行时 阅读(2314) | 评论 (4)编辑 收藏

     摘要: 以前公司购买过eWebEditor,功能应该还是不错的,但即便到了现在,也还仅是一个IE only的版本,无法满足现在差异化的需求。故前段时间下了最新的FCKeditor2.3.3版本下来(当然了,连带java的integration),demo来看看,发现有几个地方非常不爽:1、上载的文件,只能放在URL可及的地方(如默认只能放到嵌入应用路径的/UserFiles/下);2、没有明确的上载视频的...  阅读全文
posted @ 2007-03-11 20:20 IT进行时 阅读(6837) | 评论 (12)编辑 收藏

此类话题已经很多,可以参考的文档也不少,我是参考这个blog的文档做的:
http://blogger.org.cn/blog/blog.asp?name=lhwork

1)环境和版本:
Apache2.0.59+Tomcat5.5.15(两个),一开始用的是Tomcat5.0.28,一直有问题(在后面总结),就升级到5.5去做试验了,冤枉5.0.28兄弟了:)

步骤小结为:
1、安装(忽略);
2、配置Tomcat:
   1)第一个Tomcat:
      A.启用jvmRoute      
    <!-- You should set jvmRoute to support load-balancing via AJP ie :-->
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">          
    <!-- Define the top level container in our container hierarchy
    <Engine name="Catalina" defaultHost="localhost">-->
      B.启用原来禁用的Cluster设置
      
        <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                 managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                 expireSessionsOnShutdown="false"
                 useDirtyFlag="true"
                 notifyListenersOnReplication="true">

            <Membership
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastBindAddress="127.0.0.1"
                mcastAddr="224.1.2.3"
                mcastPort="2525"
                mcastFrequency="500"
                mcastDropTime="3000"/>

            <Receiver
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>

            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="15000"/>

            <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
                   filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
                  
            <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>
                     
            <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
        </Cluster>
      C.搞定
   2)配置第二个Tomcat(要注意端口冲突了):
      A.变更端口
      <Server port="8005" shutdown="SHUTDOWN">
      =》
      <Server port="8004" shutdown="SHUTDOWN">
      B.变更端口
      <Connector port="8009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
      =》
      <Connector port="9009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
      C.启用jvmRoute      
    <!-- You should set jvmRoute to support load-balancing via AJP ie :-->
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">          
    <!-- Define the top level container in our container hierarchy
    <Engine name="Catalina" defaultHost="localhost">-->
      D.启用原来禁用的Cluster设置      
        <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                 managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                 expireSessionsOnShutdown="false"
                 useDirtyFlag="true"
                 notifyListenersOnReplication="true">

            <Membership
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastBindAddress="127.0.0.1"
                mcastAddr="224.1.2.3"
                mcastPort="2525"
                mcastFrequency="500"
                mcastDropTime="3000"/>

            <Receiver
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4002"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>

            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="15000"/>

            <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
                   filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
                  
            <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>
                     
            <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
        </Cluster>
      E.搞定
3、配置apache:
   1)修订conf/httpd.conf      
      #add by zhengxq
      LoadModule jk2_module modules/mod_jk2.so
   2)新增worders2.properties并放到conf下
      [shm]
info=Scoreboard. Requried for reconfiguration and status with multiprocess servers.
file=anon

# Defines a load balancer named lb. Use even if you only have one machine.
[lb:lb]
worker=ajp13:tomcat1
worker=ajp13:tomcat2

# Example socket channel, override port and host.
[channel.socket:localhost:9009]
port=9009
host=127.0.0.1

# define the worker
[ajp13:localhost:9009]
channel=channel.socket:localhost:9009
group=lb

# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
group=lb

# Map the Tomcat examples webapp to the Web server uri space
[uri:/clusterapp/*]
group=lb
      3)搞定

3.测试程序,请参考上述参考文档,如下:
<%@ page contentType="text/html; charset=GBK" import="java.util.*"%>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info: <%out.print(request.getLocalAddr() + " : " + request.getLocalPort());%>
<%
out.println("<br> ID " + session.getId());

// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
  String dataValue = request.getParameter("dataValue");
  session.setAttribute(dataName, dataValue);
}

out.print("<b>Session 列表</b>");

Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
  String name = (String)e.nextElement();
  String value = session.getAttribute(name).toString();
  out.println( name + " = " + value);
  }
%>
<form action="index.jsp" method="POST">
  名称:<input type=text size=20 name="dataName">
  <br>
  值:<input type=text size=20 name="dataValue">
  <br>
  <input type=submit>
  </form>
</body>
</html>



   所需要注意的是:
   1、测试应用的web.xml必须加上:<distributable/>
   2、我搞了很久,发现三个东西起来后,可以访问,但只能做到负载均衡,不能session复制,这点我重复配置了一次,就是不行,郁闷之下找了tomcat的邮件列表,这样做:
      1)测试广播是否正常
         A. download this jar
            http://cvs.apache.org/~fhanik/tomcat-replication.jar

         B. Open two terminals 
            a) Terminal one run
               java -cp tomcat-replication.jar MCaster 239.255.10.10 2525 Terminal1
            b) Terminal two run
               java -cp tomcat-replication.jar MCaster 239.255.10.10 2525 Terminal2
         发现结果如下:
         C:\>java -cp tomcat-replication.jar MCaster 224.1.2.3 2525 Terminal1
Usage MCaster [address port message]
BEGIN TO RECEIVE
SENT:Terminal11
SENT:Terminal12
SENT:Terminal13
SENT:Terminal14
SENT:Terminal15
SENT:Terminal16
SENT:Terminal17
SENT:Terminal18

         表明广播有问题,气死了,难怪Tomcat总是在启动的时候提示:
         信息: Manager [/clusterapp]: skipping state transfer. No members active in cluster group.

      后来终于发现猫腻,必须注意在server.xml的<Cluster ..<Membership里面加上mcastBindAddress="127.0.0.1"。
       
为什么呢?很简单,因为我安装了VPN,这家伙会设置一个虚拟网卡,导致绑定失败(没地方责怪了,只好让它垫背)?!这是通过邮件列表里面所描述的多网卡绑定问题举一反三得到的判断。具体请参考:http://www.servlets.com/archive/servlet/ReadMsg?msgId=475067&listName=tomcat-user

      


posted @ 2007-03-07 10:51 IT进行时 阅读(7228) | 评论 (5)编辑 收藏

xsl的新版本(1.1)已经在这个月发布,请看:
http://www.w3.org/TR/2006/PR-xsl11-20061006/


这样,XML在数据交换和表现层面的地位,势必进一步呈现。

xforms是基于XML发展起来的声称为“下一代的表单(form)”,有一定广告色彩,但现在正在受到越来越多厂商的支持(如IBM正在热推的forms产品,且多家浏览器厂商已经明确支持xforms)。

其架构如下:


关注中,也请大家关注了。





参考文章:
http://www.xml.com/pub/a/2005/02/09/xforms.html?page=2&x-showcontent=off&x-order=date
http://www.ws.org.tw/ws/xml_family_show.jsp?TOP_NUM=3&num=8
posted @ 2006-10-11 10:49 IT进行时 阅读(1410) | 评论 (1)编辑 收藏

对于MySQL,还是菜鸟。
近期做个东西,写了一个MySQL 的存储过程,其中涉及Cursor的使用,如下:

CREATE PROCEDURE `justifyGroupNum`()
    NOT DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
/*how to run:call justifyGroupNum()*/
DECLARE p_group_id int;
declare p_num int;
declare stopFlag int;
DECLARE cursor_name CURSOR
  FOR select c_group_id,count(*) as num
      from `t_group_member`
      where c_valid in (3,4)
      group by c_group_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;

OPEN cursor_name;
REPEAT
FETCH cursor_name INTO p_group_id,p_num;
  begin
       update t_groupinfo set c_member_number=p_num where c_group_id=p_group_id;
  end;
UNTIL stopFlag = 1
END REPEAT;
CLOSE cursor_name;
END;

关注点有:
1、注意设置游标的countinue handler:DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;
2、注意REPEAT和UTILE [停止条件] END REPEAT的使用,否则不会循环;
3、怎样RUN?输入并执行:call justifyGroupNum()

posted @ 2006-10-10 11:49 IT进行时 阅读(5276) | 评论 (3)编辑 收藏

     摘要: 从形势来看,如果应用不使用 Spring 就感觉有点落伍——说法有点别扭:好像有点过。诚然, Spring 给我们带来了太多的好处,以至于几乎大部分的产品都以声称能够整合 Spring 为荣, Mule 也不能免俗:) 从官方来看, mule 与 spring ...  阅读全文
posted @ 2006-08-29 16:00 IT进行时 阅读(6120) | 评论 (0)编辑 收藏

     摘要: Mule是我比较关注的ESB产品之一。
从关系来看,其实ServiceMix才是我的初恋:)
这个文档是几个月前的一些简要的学习笔记,希望对大家有所帮助。(也算OpenDoc了一回,免得良心上老是被谴责:只进不出)

目前最新的版本是1.3-rc4。  阅读全文
posted @ 2006-08-01 15:06 IT进行时 阅读(2395) | 评论 (3)编辑 收藏

仅列出标题
共3页: 上一页 1 2 3 下一页