俊星的BLOG

2010年10月26日 #

实现变更统计

1、在本地数据库中创建如下表:
-- Create table
create table TMP_CR_PERSONS
(
  SPECIALTY     VARCHAR2(50),
  USER_GROUP    VARCHAR2(50),
  USER_NAME     VARCHAR2(50),
  USER_CATEGORY VARCHAR2(50)
)

2、创建DBLINK:
 
  create database link LK2PMS connect to XXX identified by XX
  using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.5.99)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oradb9)
    )
  )'

3、创建视图,查询变更清单:
CREATE OR REPLACE VIEW V_TMP_CR_LIST AS
SELECT D.CHANGE_REQUEST_CODE,
       D.PROJECT_NAME,
       D.PRODUCT_NAME,
       D.MODULE_NAME,
       D.TYPE,
       D.PRIVILEGE,
       D.PROPOSE_TIME,
       WF.TRANSACTOR,
       WF.TASKNAME,
       P.SPECIALTY,
       P.USER_GROUP,
       P.USER_CATEGORY
  FROM PMS_CHANGE@lk2pms D,
       (SELECT MAX(ID) ID
          FROM WFT_FLOWCONTROL@lk2pms WF
         WHERE WF.WORKFLOWID = 'ChangeRequest'
         GROUP BY WF.WORKID) MX,
       WFT_FLOWCONTROL@lk2pms WF,
       TMP_CR_PERSONS P
 WHERE WF.ID = MX.ID
   AND WF.WORKID = D.CHANGE_REQUEST_ID
   AND D.CHANGE_REQUEST_CODE LIKE 'CR%'
   AND WF.TRANSACTOR = P.USER_NAME
   AND D.STATE NOT IN ('结束','终止','拒绝');


4、创建统计视图:
CREATE VIEW V_TMP_CR_STAT AS
SELECT T.USER_GROUP, T.USER_NAME, COUNT(V.CHANGE_REQUEST_CODE) TOTAL
  FROM V_TMP_CR_LIST V, TMP_CR_PERSONS T
 WHERE V.TRANSACTOR(+) = T.USER_NAME
 GROUP BY CUBE(T.USER_GROUP, T.USER_NAME);

posted @ 2010-11-22 09:09 俊星 阅读(287) | 评论 (0)编辑 收藏

切换IE8中碰到的问题

1、当然是访问老系统中的,应该都采用兼容视图
2、在访问网公司系统的时候,出现内存不能写的错误提示,让后直接页面加载失败,解决办法是,找到用SOGOU浏览器加载页面后,发现需要安装JITDSign这个插件,所以手工找到JITDSign.cab,解压后直接运行“regsvr32  JITDSign.ocx”,再刷新页面,OK了。

3、其他问题暂未发现。

posted @ 2010-11-10 10:04 俊星 阅读(334) | 评论 (0)编辑 收藏

发布FWMS

1、利用命令“D:\FWMS\code\trunk\main\ear\ejb>dir /a:d /b”,列举出所有的EJB模块清单

2、结合上面的清单,结合正则“^(.*)$”,替换为“<ant antfile="${FWMS_code}/ear/ejb/$1/META-INF/build.xml" dir="${FWMS_code}/ear/ejb/$1/META-INF" target="ejbdoclet"/>”形式,并将得到的ant元素清单放置到工程下build.xml的“Generating_Code”target中。

3、基于如下正则,利用UE批量替换properties文件中的project.path:
查找:(project.path.*)
目标:project.path=../../../APP-INF/classes;../../../APP-INF/lib/activation.jar;../../../APP-INF/lib/ant.jar;../../../APP-INF/lib/apachepoi.jar;../../../APP-INF/lib/axis.jar;../../../APP-INF/lib/axis-ant.jar;../../../APP-INF/lib/bsh2.0.jar;../../../APP-INF/lib/classes12.zip;../../../APP-INF/lib/commons-
文件:build.properties
路径:D:\FWMS\code\trunk\main\ear\ejb\
(注意需要选中搜索子目录项)

4、上述完成之后,执行build_code.bat 即可完成EJB的编译

5、设置ct-config.xml中相关内容,最后是启动weblogic 并设置数据源,同时发布应用。

6、发布启动weblogic的时候,报“java.lang.OutOfMemoryError: PermGen space”异常,在C:\bea\weblogic92\common\bin的commEnv.cmd中,查看到其内存设置为“set MEM_ARGS=-Xms128m -Xmx256m”;在C:\bea\user_projects\domains\fwms_domain\bin下startWebLogic.cmd中,添加“set MEM_ARGS=-Xms256m -Xmx512m -XX:MaxPermSize=128m”,适当加大内存。

posted @ 2010-11-09 11:59 俊星 阅读(449) | 评论 (0)编辑 收藏

ActiveMQ初探

Apache ActiveMQ是一个高性能的消息代理,实现了JMS 1.1。
目前的最新版本是5.4.1
1、下载相关包,并将activemq-all-5.4.1.jar加入到工程中。

2、运行bin目录下的actionmq.bat文件,启动broker,在conf下是相关的配置文件,例如activemq.xml

3、可通过访问http://localhost:8161/admin/来查看启动情况,有可通过netstat -an|find "61616" 来查看端口,因为通过查看activemq.xml中即可发现传输连接器即配置的占用61616端口:
<transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
 </transportConnectors>

4、编写消息接收类:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JmsReceiver {
    
public static void main(String[] args) throws JMSException {
        ConnectionFactory connectionFactory 
= new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD, 
"tcp://localhost:61616");
        Connection connection 
= connectionFactory.createConnection();
        connection.start();
        Session session 
= connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        
// 需要在activemq的控制台中创建queue:testqueue
        Destination destination = session.createQueue("testqueue");
        MessageConsumer consumer 
= session.createConsumer(destination);
        
        
while (true{
            TextMessage message 
= (TextMessage) consumer.receive(1000);
            
if (null != message)
                System.out.println(
"收到消息:" + message.getText());
            
else
                
break;
        }

        session.close();
        connection.close();
    }

}


5、编写消息产生类:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JmsSender {
    
public static void main(String[] args) throws JMSException {
        ConnectionFactory connectionFactory 
= new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD, 
"tcp://localhost:61616");
        Connection connection 
= connectionFactory.createConnection();
        connection.start();
        Session session 
= connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        Destination destination 
= session.createQueue("testqueue");
        MessageProducer producer 
= session.createProducer(destination);
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        sendMsg(session, producer);
        session.commit();
        connection.close();
    }


    
public static void sendMsg(Session session, MessageProducer producer) throws JMSException {
        
// 创建一条文本消息
        TextMessage message = session.createTextMessage("你好 ActiveMQ!");
        producer.send(message);
        System.out.println(
"");
    }

}


6、通过访问http://localhost:8161/admin/,在queue中创建testqueue,先执行消息发送类,后执行消息接收类,借看看到消息接收类的如下执行结果:
收到消息:你好 ActiveMQ!
收到消息:你好 ActiveMQ!

(执行多次消息发送类,则会接受到多条“你好 ActiveMQ!”消息)

posted @ 2010-10-28 17:53 俊星 阅读(2898) | 评论 (1)编辑 收藏

CAS初步配置

此处的CAS是指Central Authentication Service,也即统一认真服务,这里采用的是JASIG提供的相关服务端及客户端类库,结合TOMCAT进行测试。

1、下载相关的服务器端和客户端类库,官网是:http://www.jasig.org/cas/,目前我采用的是:
服务器端:cas-server-3.3.4-release.zip
客户端:cas-client-2.0.11.zip

2、配置TOMCAT的SSL,具体可见上一篇博文:
在%CATALINA_HOME%/conf/server.xml中,添加:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="F:\eclipse\workspace\httpc\tomcat3.keystore"
               keystorePass="123456"/>
配置OK后,可通过访问“https://localhost:8443/examples/servlets/servlet/HelloWorldExample”来进行验证

3、配置CAS服务器端:
将cas-server-3.3.4-release.zip中modules文件夹下的cas-server-webapp-3.3.4.war的解压到TOMCAT的webapps目录下。
重启TOMCAT后,可以通过访问“http://localhost:8080/cas/login”并输入相同的用户名密码来进行验证。
另:需要特别说明,cas应用中默认配置的是SimpleTestUsernamePasswordAuthenticationHandler,该处理类只要保持用户名、密码一直即可通过验证。

4、配置CAS客户端:
在webapps\examples\WEB-INF中,对web.xml添加如下内容:
<filter>
   <filter-name>CAS Filter</filter-name>
   <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
   <init-param>
     <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
     <param-value>https://localhost:8443/cas/login</param-value>
   </init-param>
   <init-param>
     <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
     <param-value>https://localhost:8443/cas/serviceValidate</param-value>
   </init-param>
   <init-param>
     <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
     <param-value>localhost:8080</param-value>
   </init-param>
  </filter>
  <filter-mapping>
   <filter-name>CAS Filter</filter-name>
   <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
  </filter-mapping>
同时,将cas-client-2.0.11.zip中的casclient.jar,拷贝到webapps\examples\WEB-INF\lib中,重启TOMCAT即可进行验证。

5、验证CAS:
a、在浏览器中访问“http://localhost:8080/examples/servlets/servlet/HelloWorldExample”
b、基于前面配置的过滤器,浏览器会定向CAS的认证页面“https://localhost:8443/cas/login?service=http%3A%2F%2Flocalhost%3A8080%2Fexamples%2Fservlets%2Fservlet%2FHelloWorldExample”
c、在CAS的认证页面中输入相同的用户名密码test/test后,执行登录
d、浏览器提示安全警告,点击确定后即转入到“http://localhost:8080/examples/servlets/servlet/HelloWorldExample?ticket=ST-1-xWK9nwArDLbjCwYiXOqu-cas”,同时页面打出“Hello World”,配置成功。

posted @ 2010-10-26 14:36 俊星 阅读(729) | 评论 (0)编辑 收藏