2011년 11월 19일 토요일

클래스 로딩 문제 시리즈


클래스 로딩 문제 분석하기, Part 1: 클래스 로딩과 디버깅 툴 소개 (한글)

클래스 로딩 문제 분석하기, Part 2: 기본적인 클래스 로딩 예외(Exception) (한글)

클래스 로딩 문제 분석하기, Part 3: 특이한 클래스 로딩 문제 해결 (한글)

클래스 로딩 문제 분석하기, Part 4: 교착 상태와 제약 조건 (한글)

WAS Class Loader

http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/crun_classload.html

클래스 로더는 클래스 파일을 찾고 로드합니다.
클래스 로더는 Name Space를 갖습니다.
런타임 환경은 클래스 로더를 사용하여 응용프로그램에 대한 새 클래스를 찾고 로드합니다.

JVM 클래스 로더

  • 부트스트랩 클래스 로더(= Bootstrap 클래스 로더 = primordial 클래스 로더)는 부팅 클래스 경로(jre/lib,-Xbootclasspath) 상의 클래스를 찾고 로드합니다.
  • 확장자 클래스 로더(= extension 클래스 로더 = standard extensions 클래스 로더)는 시스템 특성 java.ext.dirs(=jre/lib/ext) 상의 클래스를 찾고 로드합니다.
  • CLASSPATH 클래스 로더(= system 클래스 로더 = application 클래스 로더)는 환경 변수 CLASSPATH 상의 클래스를 찾고 로드합니다.




WebSphere 확장 클래스 로더

  • 런타임에 필요한 WebSphere Application Server 클래스를 로드합니다.
  • 시스템 특성 ws.ext.dirs 상의 클래스를 찾고 로드합니다.


응용프로그램 모듈 클래스 로더

  • 응용프로그램의 클래스 및 JAR 파일을 로드하며 Java EE 클래스 로딩 규칙을 준수합니다.


웹 모듈 클래스 로더

  • WEB-INF/classesWEB-INF/lib를 로드합니다.




클래스를 로드해야 할 때마다 클래스 로더는 대개 요청을 상위 클래스 로더에 위임합니다.
어떤 상위 클래스 로더도 클래스를 찾을 수 없는 경우, 원래 클래스 로더가 클래스를 로드하려 시도합니다.
요청은 상위 클래스 로더로만 이동하며 하위 클래스 로더로 이동할 수 없습니다.


클래스 로더 정책 (하나의 로더/다수의 로더_

예 1)

Server's application class-loader policy: Single
Application's WAR class-loader policy: Module

Application 1
 Module: EJB1.jar
 Module: WAR1.war   
  MANIFEST Class-Path: Dependency1.jar
  WAR Classloader Policy = Module
Application 2  
 Module: EJB2.jar
  MANIFEST Class-Path: Dependency2.jar
 Module: WAR2.war
  WAR Classloader Policy = Application




예2)
Server's application class-loader policy: Multiple
Application's WAR class-loader policy: Module

Application 1
 Module: EJB1.jar
 Module: WAR1.war   
  MANIFEST Class-Path: Dependency1.jar
  WAR Classloader Policy = Module
Application 2  
 Module: EJB2.jar
  MANIFEST Class-Path: Dependency2.jar
 Module: WAR2.war
  WAR Classloader Policy = Application




클래스 로드 모드 (상위 로더/ 하위 로더)
클래스 로더 위임 모드는 클래스 로더 순서라고도 하며,
클래스 로드시 상위 클래스 로더로 위임하는지 여부를 결정합니다.

다음 설정은 클래스 로더의 모드를 판별합니다.
  • Application Server의 응용프로그램 클래스 로더 정책이 Single인 경우에는 서버 레벨 모드 값이 응용프로그램 클래스 로더의 모드를 정의합니다.
  • Application Server의 응용프로그램 클래스 로더 정책이 Multiple인 경우에는 응용프로그램 레벨 모드 값이 응용프로그램 클래스 로더의 모드를 정의합니다.
  • 응용프로그램의 WAR 클래스 로더 정책이 Module인 경우에는 모듈 레벨 모드 값이 WAR 클래스 로더의 모드를 정의합니다.

2011년 11월 18일 금요일

CLM 설치 - 설치 및 구성 절차


 C:\WINDOWS\system32\drivers\etc\hosts 편집 x.x.x.x ldap.clm.upgrade.ws
x.x.x.x db2.clm.upgrade.ws
x.x.x.x ccmwas.clm.upgrade.ws
x.x.x.x qmwas.clm.upgrade.ws
x.x.x.x rmwas.clm.upgrade.ws
x.x.x.x jtswas.clm.upgrade.ws
x.x.x.x www.clm.upgrade.ws

WAS7을 구성함
  1. 서버 > 서버 유형 > WebSphere Application Server > Server1
  2. 서버 인프라에서 Java 및 프로세스 관리 > 프로세스 정의
  3. 추가 특성 > JVM(Java Virtual Machine)
    • 초기 힙 크기 = 100
    • 최대 힙 크기 = 4096 (주: 32비트 컴퓨터의 경우, 최대 힙 크기를 1229MB로 설정하십시오.)
  4. JVM(Java Virtual Machine) > 추가 특성 > 사용자 정의 특성 > 새로 작성
    • JAZZ_HOME = file:///C:/IBM/JazzTeamServer/server/conf
    • java.awt.headless = true
    • org.eclipse.emf.ecore.plugin.EcorePlugin.doNotLoadResourcesPlugin = true
    • log4j.configuration = file:///C:/IBM/JazzTeamServer/server/conf/startup_log4j.properties
  5. 변경사항을 적용하려면 애플리케이션 서버를 다시 시작하십시오.

C:\IBM\WebSphere\AppServer\profiles\AppSrv01\config\
cells\PCNode01Cell\nodes\PCNode01\servers\server1\server.xml

WAS7에 LDAP구성함  
참조 : https://jazz.net/library/article/479/
  1. 보안 > 글로벌 보안 > 웹 및 SIP 보안 > 일반 설정
    • 보호 설정되지 않은 URI에 액세스할 때 사용 가능한 인증 데이터 사용 = on
  2. 보안 > 글로벌 보안
  3. 보안 설정
    • 관리 보안 사용 = on
    • 응용프로그램 보안 사용 가능 = on
    • Java 2 보안 사용 = off
    • 사용자 계정 저장소/사용 가능 범주 정의 = 독립형 LDAP 레지스트리
    • 독립형 LDAP 레지스트리 > 구성... > 일반 특성
      • 1차 관리 사용자 이름 = wasadmin
      • 서버 사용자 ID = 자동으로 생성된 서버 ID
      • LDAP 서버 유형 = 사용자 정의
      • 호스트 = ldap.clm.upgrade.ws
      • 포트 = 10389
      • 기본 식별 이름(DN) : dc=upgrade,dc=ws
      • 검색 제한시간 = 120 (초)
      • 연결 테스트
    • 추가 특성 섹션 > 고급 LDAP(Lightweight Directory Access Protocol) 사용자 레지스트리 설정 > 일반 특성
    • 독립형 LDAP 레지스트리 > 현재로 설정
  4. 변경사항을 적용하려면 애플리케이션 서버를 다시 시작하십시오.

CLM을 WAS에 배치
  1. 응용프로그램> 새 응용프로그램> 새 엔터프라이즈 응용프로그램
  2. 새 응용프로그램 경로 > 원격 파일 시스템
  3. 전체 경로 = jts.war 웹 애플리케이션 파일의 경로
  4. 웹 모듈에 대한 가상 호스트 맵핑 = default_host
  5. 사용자 또는 저장소 그룹에 보안 역할 맵핑 > 모든 Jazz 저장소 그룹에 맞은 LDAP 그룹을 맵핑
    • JazzAdmins
    • cn=MyJazzAdmins,ou=Groups,dc=upgrade,dc=ws
    • JazzDWAdmins
    • cn=MyJazzDWAdmins,ou=Groups,dc=upgrade,dc=ws
    • JazzUsers
    • cn=MyJazzUsers,ou=Groups,dc=upgrade,dc=ws
    • JazzGuests
    • cn=MyJazzGuests,ou=Groups,dc=upgrade,dc=ws
    • JazzProjectAdmins
    • cn=MyJazzProjectAdmins,ou=Groups,dc=upgrade,dc=ws
  6. CCM과 QM은 LDAP 그룹 보안 매핑이 필요합니다.
C:\IBM\WebSphere\AppServer\profiles\AppSrv01\temp\PCNode01\server1\jts_war


CLM을 Setup함 
https://www.clm.upgrade.ws/jts/setup
  • 공용 URI 루트 : https://www.clm.upgrade.ws/jts
  • JTS JDBC 위치 : 
    • //db2.clm.upgrade.ws:50000/JTS:user=db2admin;password={password};
  • 애플리케이션 등록 : 
    • RM: https://www.clm.upgrade.ws/rm/scr 
    • QM: https://www.clm.upgrade.ws/qm/scr
    • CCM: https://www.clm.upgrade.ws/ccm/scr
    • Admin: https://www.clm.upgrade.ws/admin/scr
  • Jazz Team Server의 ADS LDAP 구성
    • LDAP 레지스트리 위치 : ldap://ldap.clm.upgrade.ws:10389
    • 기본 사용자 DN : ou=Users,dc=upgrade,dc=ws
    • 사용자 특성 이름 맵핑 : userId=uid,name=cn,emailAddress=mail
    • 기본 그룹 DN : ou=Groups,dc=upgrade,dc=ws
    • Jazz 대 LDAP 그룹 맵핑 : JazzAdmins=MyJazzAdmins, JazzUsers=MyJazzUsers, JazzDWAdmins=MyJazzDWAdmins, JazzProjectAdmins=MyJazzProjectAdmins, JazzGuests=MyJazzGuests
    • 그룹 이름 특성 : cn
    • 그룹 멤버 특성 : uniquemember
    • 연결테스트
  • CCM JDBC 위치 :
    • //db2.clm.upgrade.ws:50000/CCM:user=db2admin;password={password};



2011년 11월 16일 수요일

RTC + Windows Explorer

출처 : https://jazz.net/wiki/bin/view/Main/RTCShellSourceControl


Set Sandbox
  1. Open a windows explorer window and browse the folder where the sandbox folder is located 
  2. Right click on the folder and select Rational Team Concert->Set Sandbox 
  3. A progress dialog should be displayed indicating that the sandbox is being set. No login window should be displayed. 
  4. To verify whether a sandbox has been set 
  5. Right click on the sandbox folder and choose Rational Team Concert. The Set Sandbox option is greyed out 
  6. Browse into the sandbox folder. If there are items already shared to source control, overlay icons will be displayed 
  7. The sandboxes node in Team Concert Shell view should display a > icon next to the sandbox
Share
  1. From windows explorer, set a sandbox 
  2. Browse inside the sandbox, create a folder 
  3. Right click on the folder and select Rational Team Concert->Share 
  4. The share dialog should come up 
  5. Specify the component to share (or create a new one) 
  6. Complete sharing 
  7. After share dialog closes, press F5. The share icon overlay should be displayed on the folder
Disconnect
  1. From windows explorer, set a sandbox 
  2. Browse inside the sandbox, right click on a shared top level folder and select Rational Team Concert->Disconnect 
  3. The folder should be disconnected. 
  4. After the progress dialog closes, press F5. The share icon overlay should not be displayed on the folder anymore.
Check-in
  1. From windows explorer, set a sandbox 
  2. Browse inside a shared folder in the sandbox and create a file 
  3. Right click on the file and select Rational Team Concert->Check-in 
  4. After the checkin dialog appears and closes, press F5. The share icon overlay should be displayed on the folder.
Undo
  1. From windows explorer, set a sandbox 
  2. Browse inside a shared folder in the sandbox. 
  3. Modify a file that is already shared. 
  4. After saving and closing the file, select Rational Team Concert->Refresh and then press F5. 
  5. The unresolved icon overlay should appear on the file. 
  6. Right click on the file and select Rational Team Concert->Undo 
  7. After the undo dialog appears and closes, press F5. The share icon overlay should be displayed on the folder.
Show History
  1. From windows explorer, set a sandbox 
  2. Browse inside a shared folder in the sandbox. 
  3. Right click on a shared file , select Rational Team Concert->Show History 
  4. The History dialog should appear
Add to ignore list
  1. From windows explorer, set a sandbox 
  2. Browse inside a shared folder in the sandbox. 
  3. Right click on a shared file and select Rational Team Concert->Add to ignore list 
  4. The Add to ignore dialog is displayed
  5. Press Ok to finish ignoring the file 
  6. Press F5, the ignore overlay icon should appear on the file.
Remove from ignore list
  1. From windows explorer, set a sandbox 
  2. Browse inside a shared folder in the sandbox. 
  3. Right click on the file ignored in the previous test and select Rational Team Concert->Remove from ignore list 
  4. The Remove from ignore dialog is displayed 
  5. Complete the process of unignoring the file 
  6. Press F5. The shared overlay icon should appear on the file.
Compare with previous
  1. From windows explorer, set a sandbox 
  2. Browse inside a shared folder in the sandbox. 
  3. Modify a shared file and save it. 
  4. Right click on a shared file and select Rational Team Concert->Compare with previous 
  5. The Compare dialog should be displayed.

Test RealTime for 64-bit applications on Linux

http://www-01.ibm.com/support/docview.wss?uid=swg21376792


If you installed TestRT 7.5 on a Linux computer that supports 64-bit applications, you get a 64-bit compatible Target Deployment Port (TDP) automatically.
  •     This TDP's name is Linux - Gnu 3.x 64 bits.
  •     The TDP's file is clinuxgnu3_2_64bits.xdp in the targets/xmldirectory.

If you installed TestRT 7.5 on a Linux computer that does not support 64-bit applications, you need to manually create a 64-bit TDP. The same applies to non-Linux computers.

The following steps adapt the existing 32-bit TDP for 64-bit applications.
  1.     Copy the existing clinuxgnu3_2.xdp to clinuxgnu3_2_64bits.xdp.
  2.     Open the clinuxgnu3_2_64bits.xdp file in the TDP Editor.
  3.     Right click on the label top most node Linux - Gnu 3.x, then choose Rename and rename the node to Linux - Gnu 3.x 64bits.
  4.     Click the node Basic Settings > For C.
        Change the DEFAULT_CPPFLAGS to -m64.
  5.     Click the node Basic Settings > For C++.
        Change the DEFAULT_CPPFLAGS to -m64.
  6.     Click the node Library Settings > Data types and select the check box next to the label RTRT_64_BITS_PTR.
  7.     In the same node change the value of RTRT_SIZE_T to unsigned long.
  8.     Click the node Parser Settings > Header adaptation for C.
        At the end of the text add the following line:

        #pragma attol sizeof(long) = 64
  9.     Click the node Parser Settings > Analyzer file configuration.
        After the line --dollar add the following lines:

        --targ_size_t_int_kind 8
        --diag_suppress 61,69
  10.     Clik the menu File > Save & Generate.
You can now test your new TDP against the test script attached to this technote.




Recently made a modification to the parser for 64 bits where int are 32bits

--long_64_bits <==new in 7.5.0.6
Allows to set the parser for target type having the sizeof long as a 64 bits and sizeof int as a 32 bits.

--targ_64_bits
Allows to set the parser for target type having the sizeof int and sizeof long as a 64 bits.

so following TDP modification detailed on the techNote you need to clarify
if the int type is 64bits or 32 bits

so try to add the --targ_64_bits following the --targ_size_t_int_kind 8

Jazz Server Performance Monitoring

https://jazz.net/forums/viewtopic.php?t=304&highlight=performance+monitoring


Matt started a nice Wiki page to enable/setup ARM monitoring of Jazz server
https://jazz.net/wiki/bin/view/Main/EnablingArmMonitoring


Link to enable ARM monitoring in WebSphere
http://www.ibm.com/developerworks/tivoli/library/t-armtcamrtt/index.html

If you use WebSphere Application Server (instead of Tomcat), you could use the Request Metrics functionality in WebSphere to provide the ARM data.


Jazz Server Counters (INTERNAL)


Some additional internal Jazz tools are available by adding a parameter to your administration URL as follows:

https://localhost:9443/jazz/admin?internal=true


Counters

Invoking this menu option brings up a screen showing detailed invocation counts and elapsed time data (minimum, maximum, average, total) for functions such as caching, database queries, web service calls, etc. It can be useful to help pinpoint areas causing performance and scalability problems, and is of great value to IBM Support.

Reload Log Settings

In the $JAZZROOT/server/conf/jazz directory is a file called log4j.properties. This file controls what and where the RTC server logs. For example, the size, location, etc. of the traditional jazz.log file is controlled there.

Sometimes it is helpful to change a logging attribute, such as changing the level of messages logged from the default of WARN to a more verbose level of DEBUG. Typically a server restart is required to make such changes take effect; the Reload Log Settings feature allows you to make logging configuration changes take effect without a server restart. Simply make your desired change(s) to log4j.properties and invoke the Reload Log Settings function. Your changes should be used immediately.

Provision Status

The management of user extensions, as well as many built-in functions, is handled by the provisioning services of Jazz. These are built using the Eclipse methodology (see my previous article Rational Team Concert - Creating Custom Operation Advisors to get more information).

The Provision Status page shows what features have been installed onto the server, and the actual jars that comprise those features. This information is helpful not only to determine whether your custom extension was properly provisioned, but also to glean more information about built-in functions (for example, understanding what jars implement which RTC features). It's also a valuable place to go to understand what version of a given jar file is active in the server.

Server Reset

You would use the Server Reset option to force the Jazz server to "reprovision itself" the next time it is restarted. This is used, for example, to get the server to load a new feature that has been specified in an .ini file located in the $JAZZROOT/server/conf/jazz/provision_profiles directory. It is also used when changing the underlying application server from Tomcat to WebSphere.

2011년 11월 15일 화요일

What tools can I use to look at the database tables?

If you don't already have a DBMS-independent client, you may want to try SQL Workbench. It's a very light-weight java app that works on Windows and Linux. You basically configure your JDBC drivers once. Then you can setup db profiles to point at your different databases. You can browse the tables, the DDL, and also execute SQL statements.