레이블이 Lang인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Lang인 게시물을 표시합니다. 모든 게시물 표시

2010년 8월 11일 수요일

톰켓에서 일부 폴더(common, bin, webapps 등) 접근 (404 에러) 이슈

톰켓에서 일부 폴더 (common, bin, webapps, server)가

접근이 안되고 404에러가 나는 경우가 있다.

 

이유는 간단한다.

 

보통 서버 설정시에 가상호스트를 많이 사용하는데

 

<Host name="dev.domain.com">
   <Context path=""
    docBase="/data/homepage/domain"      
          reloadable="true"
          debug="true">
         </Context>
   <Alias>dev.domain.com</Alias>
  </Host>

 

이렇게들 많이 설정할 것이다.

 

이렇게 되면 Host의 appBase 속성이 빈 문자열이 되면서

자동적으로 $TOMCAT_HOME 를 바라보게 된다.

 

이로인해 $TOMCAT_HOME 하단 폴더를 먼저 바라보는 기이한 현상이 일어나게 된다.

ex) common, bin, webapps, server, conf, logs, shared, temp, work 등

 

고로 Host의 appBase 속성을 꼭 지정하도록 한다

본인은 그냥 webApps로 지정하였다.

 

<Host name="dev.domain.com" appBase="webapps">
   <Context path=""
    docBase="/data/homepage/domain"      
          reloadable="true"
          debug="true">
         </Context>
   <Alias>dev.domain.com</Alias>
  </Host>

 

* 되도록이면 지정하는 폴더는 내부에 아무런 내용이 없는 것으로 하는 것이 좋다.

그래야 또 겹치는 폴더가 없으므로 ㅇㅇ

 

 

* 참고로 본인이 개발한 환경은 apache2 + tomcat5.5 + mod_jk 연동에서 난 오류 이므로 버전이 다르거나 연동하지 않는 경우에는 어떻게 될련지 모릅니다.

 

 

이것 때문에 4시간 삽질한게 자랑 ㅠ

apache usage경로(폴더) 접근제한(403 forbidden) 이슈

 

아파치 설치 경로가 /etc/httpd 라고 할 경우

 

/etc/httpd/conf.d/webalizer.conf 파일 내용에

 

Alias /usage /var/www/usage

<Location /usage>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
    # Allow from .example.com
</Location>

 

이런 내용이 가상 디렉토리로 잡아서 생기는 문제이다

이 부분을 주석처리 하면 된다.

 

 

2010년 7월 28일 수요일

ASP 다국어 이슈 (UTF-8)

ASP
1. Response.AddHeader "content-type","text/html;charset=UTF-8"
2. Response.Charset = "UTF-8"
3. Session.CodePage = 65001 '새로고침 대응

위 내용은 공통 Include 페이지에 포함 시킨다.

4. <%@ LANGUAGE='VBSCRIPT' CODEPAGE='65001' %>
-> 위 문장은 리퀘스트에서 넘어가는 값들(ex:Request("name"))을 UTF-8로 변환시킨다.

5. .asp 소스 파일은 꼭 UTF-8로 형식으로 저장 한다.
HTML <meta> 태크 추가
-> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

6. 단... 메일 관련된 HTML 파일의 경우 (ex: /mail/joinConfirm.html)
->내부적으로 Server.CreateObject("Scripting.FileSystemObject") 이용하여 파일 내용을 긁어올 경우
대상 HTML 파일은 일반 ANSI 형식으로 저장한다.

7. 파일 다운로드 관련....
Response.AddHeader "Content-Disposition","attachment;filename=" & Server.URLPathEncode(Realname)
다운로드 이름을 꼭 URL 인코드해야 한글 다운로드가 제대로 인식된다.

MS-SQL
1. nvarchar, nchar, ntext 형 데이터를 사용한다
-> varchar, char, text 형 데이터 사용금지.
2. 만일 커맨더 객체를 사용할 경우 nvarchar, nchar, ntext 형 맞게 수정해야한다.
3. Collate (정렬방식을 Unicode 방식으로 정의한다.)
ex)
CREATE TABLE [dbo].[t_admin](
[adminid] [nvarchar](25) COLLATE Korean_Wansung_Unicode_CI_AS

 

 

* 만약 다국어가 아니라 UTF-8 일 경우에는 마지막 MS-SQL 세팅은 굳이 nvarchar 형을 사용하지 않고 varchar 형을 사용해도 된다.

2010년 7월 21일 수요일

fedora 12 svn 설치

-SVN 설치

# yum install subversion

 

-mod_dav_svn.so 설치

# yum install mod_dav_svn

 

-sqlite 설치

# yum install sqlite

 

-저장소 만들기

# mkdir /svnroot

# cd /svnroot

# svnadmin create --fs-type fsfs svn

# svnserve -d -r /svnroot/svn

 

-svn repository 설정
# cd /svnroot/svn/conf
# vi svnserve.conf --파일을
열어서 #표시가 있는 부분은 모두 제거(authz-db= 제외)


-권한설정

# chmod -R g+w /svnroot/svn
# chown -R apache.apache /svnroot/svn

 

-사용자 아이디와 패스워드 파일 /svnroot/svn/svn-auth-file 생성
# htpasswd -cm /svnroot/svn/svn-auth-file 사용자아이디 -- 최초 생성시.
# htpasswd -m /svnroot/svn/svn-auth-file 사용자아이디 --사용자 추가시.
명령어를 입력하면 패스워드 입력 프롬프트가 발생한다.

 

Apache를 /etc/httpd에 설치했으므로 설정파일은 /etc/httpd/conf/httpd.conf 입니다. dav, dav_svn 모듈이 설정되어 있는지 확인 합니다. 주석처리 되어 있으면 주석을 없애고 없다면 아래 두줄을 추가합니다.

LoadModule dav_module         modules/mod_dav.so
LoadModule dav_svn_module     modules/mod_dav_svn.so
 
- 아파치 연동을 위한 설정
# vi /etc/httpd/conf/httpd.conf

--VirtualHost 부분에 svn 설정내용을 추가한다.
<VirtualHost *:80>
<Location "/svnroot/svn"> --svn 접속경로
  DAV svn
  SVNPath /svnroot/svn
  AuthType Basic AuthName "SVN repository"
  AuthUserFile /svnroot/svn/svn-auth-file
  Require valid-user
</Location>
</VirtualHost>

-서버 재시작

# service httpd restart

-방화벽에서 80포트, 3690포트를 연다.

vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

 

# service iptables restart

 

 

 

 

* 방화벽 관련

방화벽 상태 알아보기
/sbin/service iptables status

방화벽 올리고 내리기
/sbin/service iptables stop
/sbin/service iptables start

방화벽 설정 수정하기
vi /etc/sysconfig/iptables

 
※ 주의 사항 ※
selinux 가 실행중이라면 정상작동을 하지 못하는 경우가 있다.
이럴때는 #vi /etc/selinux/config
SELINUX=disabled -> 로 변경해 주거나
[GUI]
프로그램메뉴의 시스템 설정 -> 보안수준 -> SELinux -> 사용안함으로 설정하면 된다.


2010년 3월 25일 목요일

asp.net MSDTC(OraMTS) + Oracle 11g client + Windows 7

 

정말 MS와 Oracle의 궁합은 이리도 안 좋은 것인가....

 

현재 닷넷 관련 프로젝트를 진행 중인데

복 수개의 Oracle 서버 (Oracle 9I) 와 복 수개의 MS-SQL2008 서버에 접근해서

트랜젝션을 처리해야한다..

 

본 프로젝트에서 솔루션으로 생각한게

OracleClient 를 사용한 Managed Oracle Provider 1.1 을 사용하고

MSSQL과 Oracle 를 동시에 트랜젝션 처리를 하기위해서 MSDTC를

사용하게 되었다..

 

이것을 사용하기 위해서 Oracle MTS(Microsoft Transaction Service)를 사용하기로 했는데 정말 빌어먹을 DCOM의 트랜젝션에 MTS를 넣기가 엄청나게 힘든것이다..

 

우선 윈도우즈 버젼이 비스타나 Server2008 윈도우즈7 일 경우에는

서버 버전이 무엇이든 간에 오라클 클라이언트를 11g 를 깔아야합니다.

 

9i로 어떻게든 해볼려고 했었는데....  결론은 트랜젝션이 완벽하지 않게 된다..

-본 프로젝트는 TransactionScope 객체를 사용함-

 

일부 웹자료를 살펴보니 Enlist=false 옵션을 ConnectionString에 먹이면 된다고 하는데

다시 한 번 강조하지만 그렇게 되면 해당 커넥션이 트렌젝션에 참가하지 않게 되므로

사용자 Exception 이나 오류가 발생한 경우 rollback가 되지 않는다.

 

결국 찾다찾다 보니 진리의 msdn 님께서 비스타 이상에서는 oracle 11g Client 를 깔아서

MSDTC 설정을 잘하라는게 결론인데 이와 관련된 설정도 엄청나게 힘들었다...

 

첫번째 : 11g client 깔기

 

http://www.oracle.com/technology/software/products/database/oracle11g/111060_win32soft.html

 

두번째 : ODT for Visual Studiy 깔기

 

http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

 

세번째 : 환경설정

ORACLE_HOME : oracle client home 경로 ex) D:\product\11.1.0\client_1

ORACLE_HOME 경로에 Network Service, IIUser 보안 권한주기

 

네번째 : DTC 설정

 

http://msdn.microsoft.com/ko-kr/library/aa561924(en-us,BTS.20).aspx

 

1.  Set the appropriate MSDTC Security Configuration options on Windows Server 2003 SP1, Windows XP SP2, Windows Server 2008, and Windows Vista

(기본 사용설정)

 

2. If Windows Firewall is running, add an exception for the MSDTC service

(방화벽해제)

 

그리고 2008 서버일경우 레지스트리에 권한 추가

http://piliusa.tistory.com/12?srchid=BR1http%3A%2F%2Fpiliusa.tistory.com%2F12

 

그리고 재부팅....

 

만약 그래도 안 될경우..

한글 기술 문서 링크 올립니다..

http://support.microsoft.com/kb/976963/ko

 

 

 

잘 되네요 유후~

2009년 11월 25일 수요일

The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 22 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

Stacktrace:
        org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
        org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
        org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        netville.servlet.filter.EncodingFilter.doFilter(EncodingFilter.java:53)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.

 

 

톰켓6.0 내부($JAKARTA_HOME$/lib)에 자체적으로 servlet-api.jar과 jsp-api.jar를 포함하고 있다.

 

 

그런데 이클립스 프로젝트의 확장 jar 중에 위에 해당하는 jar가 있거나

WEB-INF/lib 폴더에 위 jar가 포함된경우 기존 jar와 충돌이 나면서 나는 에러이다

 

해결법은 간단하게 해당 jar(servlet-api.jar과 jsp-api.jar)를 lib폴더에서 삭제하고

이클립스에서는 해당 jar를 포함을 하되 배포시에 외부로 해당 jar를 배포 못하게 하면 된다.