<hg*****@gmail.com>: host gmail-smtp-in.l.google.com[108.177.97.27] said: 550-5.7.1 [59.9.162.64 12] Our system has detected that this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please visit 550-5.7.1 https://support.google.com/mail/?p=UnsolicitedMessageError550 5.7.1 for more information. x64si3716152pfc.130 - gsmtp (in reply to end of DATA command)
2. 대부분 계정 해킹으로 인한 대량메일 발송으로 인해 차단되는 경우가 대부분이다. 아래 안내 페이지의 "대량메일 발신자 가이드라인" 을 선택한다.
3. 우측에 바로가기 메뉴 중 "IP 주소 차단으로 인한 메일반송 문제 해결하기" 를 선택한다.
4. '설치' 단계의 첫 항목 "새 SQL Server 독립 실행형 설치 ....." 를 선택한다.
5. 무료 버전으로 진행한다. ( 180일 사용가능 )
6. 라이선스 동의 의 진행.
7. 자동 업데이트 옵션 선택 후 진행한다.
8. 설치 결과를 확인한다. ( 방화벽 경고는 무시한다. )
9. 기능선택 옵션에서 필요한 기능을 선택한다.
테스트 서버임으로 기본 3개 기능만 선택하고 진행한다. (데이터베이스 엔진 서비스, 검색을 위한 전체 텍스트 및 의미체게 추출, 클라이언트 도구 연결)
10. 인스턴스 구성 ( 기본설정으로 진행)
* ( 인스턴스에 대한 이해) SQL Server는 하나의 컴퓨터에 대해 여러 인스턴스가 설치될 수 있다. 즉, 하나의 컴퓨터에 서로 다른 데이터베이스를 보유하는 SQL Server를 여러 번 설치할 수 있다는 얘기이며, 각각의 인스턴스는 자신만의 데이터베이스를 보유하게 된다. 이들 SQL Server 인스턴스는 디폴트 인스턴스와 명명된 인스턴스(named instance)로 나누어 볼 수 있는데, 디폴트 인스턴스는 대개 최초로 설치되는 SQL Server 인스턴스를 말하며 특별한 이름이 붙지 않는다. 디폴트 인스턴스가 설치된 이후에 추가로 설치되는 SQL Server는 디폴트 인스턴스와 구분하기 위해 각 인스턴스 마다 이름이 붙게 된다. 이렇게 이름이 붙은 SQL Server 인스턴스를 명명된 인스턴스라고 한다. 예를 들어 보자. 필자의 데스크톱에는 SQL Server 2000, SQL Express, SQL Server 2005가 모두 설치되어 있다. 이 중 최초로 설치한 SQL Server 2000이 디폴트 인스턴스이며, SQL Express와 SQL Server 2005는 각각 이름이 SQLEXPRESS, SQL2005 인 명명된 인스턴스이다. 그리고 이들 인스턴스들이 모두 동시에 수행될 수 있다. 다시 말하자면 sqlservr.exe 프로세스가 여러개 수행 중일 수 있다는 말이다.
디폴트 인스턴스와 명명된 인스턴스는 설치 시에 결정된다. SQL Server를 설치할 때, 해당 인스턴스를 디폴트 인스턴스로 설치할 것인지, 명명된 인스턴스로 설치할 것인지 결정할 수 있다. 대개, 첫 번째 SQL Server를 설치할 때, 설치 프로그램은 디폴트 인스턴스로 설치하곤 하지만 반드시 그렇게 해야만 하는 것은 아니다. 컴퓨터에 달랑 1개의 SQL Server 인스턴스를 설치하더라도 명명된 인스턴스로 설치가 가능함에 유의하자.
SQL Express의 경우, 항상 명명된 인스턴스로 설치된다. 설치 프로그램은 SQL Express를 설치할 때 SQLEXPRESS 라는 이름을 사용하여 데이터베이스를 설치하며, 이미 이 이름이 존재하는 경우 뒤에 숫자가 붙게 된다.
Referencing SQL Server Instances
그렇다면 하나의 컴퓨터에 여러 SQL Server가 존재할 때, 각각의 인스턴스를 참조하는 방법은 무엇일까? 디폴트 인스턴스는 이름을 갖지 않기 때문에 해당 컴퓨터의 컴퓨터 이름 혹은 IP 로서 참조된다. 반면 명명된 인스턴스는 컴퓨터 이름(혹은 IP)과 인스턴스 이름을 백슬래쉬(\) 문자로 구분하여 모두 명시해 주어야 한다. 예를 들어, DBServer 란 컴퓨터(IP가 10.1.1.10 이라 가정)에 SQL Server 2000 이 디폴트 인스턴스이며, SQL Express 그리고 SQL Server 2005가 SQLEXPRESS, SQL2005란 이름으로 설치되었다고 가정해 보자. 먼저 디폴트 인스턴스인 SQL Server 2000을 참조하기 위해서는 단순히 DBServer(혹은 IP 10.1.1.10)로만 참조하면 디폴트 인스턴스에 접근할 수 있다. SQL Express에 접근하기 위해서는 DBServer\SQLEXPRESS 로, SQL Server 2005에 접근하기 위해서는 DBServer\SQL2005 라는 SQL Server 이름을 사용해야 한다.
<servlet> <servlet-name>hello</servlet-name> <!-- DD 안에서 사용될 이름을 지정한다. --> <servlet-class>com.oracleclub.study.servlet.HelloServlet</servlet-class> <!-- Servlet 클래스 이름을 기술한다. --> </servlet>
<servlet-mapping> <servlet-name>hello</servlet-name> <!-- Servlet 클래스의 DD안에서 정의한 이름 --> <url-pattern>/servlet/hello</url-pattern> <!-- 클라이언트가 요청하게 될 이름. --> </servlet-mapping>
배포서술자에서 서블릿 관련 항목을 간단히 설명하면 아래와 같다.
<servlet> : <servlet-name>과 <servlet-class>를 연결 한다.
<servlet-name> : DD 안에서 사용될 이름
<servlet-class> : 자바 클래스 이름
<url-pattern> : 클라이언트가 요청하게 될 이름
<servlet-mapping> : <servlet-name>과 <url-pattern>을 연결 한다.
Clinet IP : 0:0:0:0:0:0:0:1 Client Host : 0:0:0:0:0:0:0:1 Request URI : /servlet/hello
2.6 URL과 Servlet을 간단하게 매핑하기
위 예제에서 간단하게 HelloServlet을 실행하였는데, 만약 서블릿 클래스가 굉장히 많아 진다면, <servlet> , <servlet-mapping> 설정이 서블릿의 두 배만큼 많아 질 것이다.
톰캣에서는 서블릿 매핑 설정을 간단하게 할 수 있는 기능을 제공하며, 톰캣 서버의 web.xml(이클립스에서는 <Servers> <spring-project-config>의 web.xml) 에서 아래 부분의 주석만 해제하면 된다.
web.xml 파일 설정
<!-- 122라인 -->
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- 382라인 -->
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
Tomcat Server의 web.xml 수정 후 이클립스를 다시 실행한다.
spring-project의 web.xml 에서 아래와 같이 servlet 이름만 지정하고 <servlet-mapping> 설정은 제거한다.
web.xml
<servlet> <servlet-name>hello</servlet-name> <!-- DD 안에서 사용될 이름을 지정한다. --> <servlet-class>com.oracleclub.study.servlet.HelloServlet</servlet-class> <!-- Servlet 클래스 이름을 기술한다. --> </servlet>
Invoker를 이용한 매핑의 경우 클라이언트 URL은 /servlet/servlet-name 이 된다.
3. 톰캣 startup 시 오류
3.1 404 Not Found 오류
<Server> → <spring-project> → <Web Moduls>에서 Path가 아래와 같이 공백으로 되어 있는지 확인한다.
3.2 java.lang.SecurityException
톰캣이 startup시 "Caused by: java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged and cannot be loaded by this web application" 에러가 발생한다면 Tomcat Server의 server.xml 파일에서 <Context> 태그에 privileged="true" 옵션을 추가하면 된다.
3.3 java.lang.ClassNotFoundException
톰캣이 startup시 "java.lang.ClassNotFoundException" 오류가 발생하면 .classpath의 MAVEN2_CLASSPATH_CONTAINER 부분을 확인한다.
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx=0 AND active=1 UNION SELECT alias_domain.alias_doma
in FROM alias_domain,domain WHERE alias_domain.alias_domain='%s' AND alias_domain.active=1 AND alias_domain.target_domain=
domain.domain AND domain.active=1 AND domain.backupmx=0
query = SELECT forwardings.forwarding FROM forwardings,domain WHERE forwardings.address='%s' AND forwardings.domain=
domain.domain AND forwardings.active=1 AND domain.backupmx=0 AND domain.active=1