web.xml 등록

<listener>
	<!-- 
		현재 요청되어진 HttpServletRequest 객체의 
		레퍼런스정보를 저장하는 기능을 제공한다. 
			
		자바 소스 사용 예) : 
		ServletRequestAttributes attr = 
			(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
					
		HttpServletRequest = attr.getRequest();
	-->
	<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

'JAVA' 카테고리의 다른 글

[JAVA] 간단한 RootPath 얻기  (448) 2022.12.15
[JAVA] replaceAll 정규식  (0) 2022.05.23
[JAVA] pdf를 이미지로 만들기 (PDFRenderer.jar)  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] replaceAll 정규식

JAVA 2022. 5. 23. 17:30
public String replaceStringAll(String source, String regex, String replacement) { 

	if(source == null || regex == null || replacement == null){ 
		return null; 
	}
    
    regex = regex.replaceAll("\\.", "\\\\."); 
    regex = regex.replaceAll("\\*", "\\\\*"); 
    regex = regex.replaceAll("\\?", "\\\\?"); 
    regex = regex.replaceAll("\\+", "\\\\+"); 
    regex = regex.replaceAll("\\[", "\\\\["); 
    regex = regex.replaceAll("\\{", "\\\\{"); 
    regex = regex.replaceAll("\\(", "\\\\("); 
    regex = regex.replaceAll("\\)", "\\\\)"); 
    regex = regex.replaceAll("\\^", "\\\\^"); 
    regex = regex.replaceAll("\\|", "\\\\|"); 
    regex = regex.replaceAll("\\$", "\\\\\\$"); 
    
    return source.replaceAll(regex, replacement); 
}

'JAVA' 카테고리의 다른 글

[JAVA] 간단한 RootPath 얻기  (448) 2022.12.15
[JAVA] RequestContextListene request 반환  (0) 2022.05.24
[JAVA] pdf를 이미지로 만들기 (PDFRenderer.jar)  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

PDFRenderer는 pdf파일을 page단위로 java.awt.Image 개체로 만듭니다.

package com.pdfImg.pdfTest;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import javax.imageio.ImageIO;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

public class PdfImage {
	public static void main(String args[]) throws IOException{
    
    	//load a pdf from a byte buffer
        File file = new File("c:\\User\\test.pdf");
        RandomAccessFile raf = new RandomAccessFile(file, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
        PDFFile pdffile = new PDFFile(buf);
        
        // draw the first page to an image
        PDFPage page = pdffile.getPage(2);
        
        //get the width and height for the doc at the default zoom 
        Rectangle rect = new Rectangle(0,0,(int)page.getBBox().getWidth(),(int)page.getBBox().getHeight());
        
        //generate the image
        Image image = page.getImage(
        	rect.width, rect.height, //width & height
                rect, // clip rect
                null, // null for the ImageObserver
                true, // fill background with white
                true  // block until drawing is done
		);
        
        int w = image.getWidth(null);
        int h = image.getHeight(null);
        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = bi.createGraphics();
        g2.drawImage(image, 0, 0, null);
        g2.dispose();
        
        try{
        	ImageIO.write(bi, "jpg", new File("c:\\User\\imagePdfTest.jpg"));
        }catch(IOException ioe){
        	System.out.println("write: " + ioe.getMessage());
        }
	}        
}

---------------- 간략한 소스 설명 ----------------
// draw the first page to an image
PDFPage page = pdffile.getPage(2);

위의 코드가 pdf의 특정 page를 선택하는 부분입니다. 2페이지를 선택했습니다.

pdffile.getNumPages();
위의 코드로 pdf파일의 총 페이지 수를 알 수 있습니다.

총 페이지 수로 for문을 돌리면 모든 페이지를 이미지로 만들 수 있을 것 입니다.

'JAVA' 카테고리의 다른 글

[JAVA] RequestContextListene request 반환  (0) 2022.05.24
[JAVA] replaceAll 정규식  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
[JAVA] 휴일 알아내기  (0) 2021.06.25
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] PathVariable

JAVA 2022. 5. 23. 15:36
@RequestMapping("/{siteTp}/test/selectTestList.do")
public String selectTestList(HttpServletResponse response,HttpServletRequest request,
@PathVariable("siteTp") String siteTp,ModelMap model) throws Exception{

tmpPage = "/"+siteTp+"/test/testList";

// @PathVariable 을 이용하여 REST 방식의 url을 적용

//Rest 방식으로 url을 지정할 경우에

//게시판의 경우 http://~/board/[관리자ID]/[게시물ID] 호출하면 내용을 볼 수 있도록 될 것입니다.

//컨텐츠 관리의 경우 http://~/contents/[컨텐츠ID] 호출하면 내용을 볼 수 있도록 될 것입니다.

수정된 소스 부분

1. spring-context.xml 추가

<!-- 어노테이션 스캔 설정-->
<context:component-scan base-package="*" />

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:alwaysUseFullPath="true" />

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" p:alwaysUseFullPath="true" />

2. springmvc-context.xml

// 인터셉터 추가

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
	<property name="alwaysUseFullPath" value="true" />
	<property name="interceptors">
		<list>
			<ref bean="localeChangeInterceptor" />
		</list>
	</property>
</bean>
 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
	<property name="alwaysUseFullPath" value="true" />
</bean> 

3. web.xml 추가

<filter-mapping>
	<filter-name>authenticationFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>/board/*</url-pattern>
</filter-mapping>

<!-- 스프링 mvc 적용 URL -->
<servlet-mapping>
	<servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>*.static</url-pattern>
    <url-pattern>/board/*</url-pattern>
</servlet-mapping>

4. @Controller (kr.test.you.board.web.BoardCtrl) 함수

@RequestMapping(value = "/board/view/{manageIdx}/{boardIdx}")
public ModelAndView boardView1(@PathVariable("manageIdx") String manageIdx, @PathVariable("boardIdx") String boardIdx, ModelMap model) throws Exception {

	Map<String, Object> resultMap = new HashMap<String, Object>();

    resultMap.put("boardIdx", boardIdx);

	resultMap.put("manageIdx", manageIdx);
    
    String resultURL = "board/view";
    
    return new ModelAndView(resultURL, "resultMap", resultMap);
}
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] Object Array

JAVA 2022. 5. 23. 14:21
Object params[] = {
	StringUtils.nvl(parameters.print("cc_yn"), "n"),
    StringUtils.nvl(parameters.print("aveeno_yn"), "n"),
    StringUtils.nvl(parameters.print("johnsons_yn"), "n"),

    StringUtils.nvl(parameters.print("listerine_yn"), "n"),
    StringUtils.nvl(parameters.print("nizoral_yn"), "n"),
    StringUtils.nvl(parameters.print("rogaine_yn"), "n"),
    StringUtils.nvl(parameters.print("bandaid_yn"), "n"),

    StringUtils.nvl(parameters.print("nicorette_yn"), "n"),
    StringUtils.nvl(parameters.print("neutrogena_yn"), "n"),

    sessionEntity.print("id")
};
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart 리졸버

JAVA 2019. 2. 28. 17:14

multipart 리졸버


○ 파일 업로드와 같이 멀티파트 포멧의 요청정보를 처리하는 전략을 설정할 수 있다.


○ 멀티파트 처리를 담당하는 다양한 구현으로 바꿀 수 있도록 설계되어 있지만, 현재는 아파치 Commons 의 FileUpload 라이브러리를 사용하는 CommonsMultipartResolver 한 가지만 지원된다.


○ 멀티파트 리졸버 전략은 디폴트로 등록되는 것이 없다. 따라서 적용하려면 아래와 같이 빈을 등록해줘야 한다.


<bean name="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    

<property name="maxUploadSize" value="100000" /> 

</bean> 


○ DispatcherServlet 은 클라이언트로부터 멀티파트 요청을 받으면 멀티파트 리졸버에게 요청해서 HttpServletRequest 의 확장 타입인 MultipartHttpServletRequest 오브젝트로 전환한다.


○ MultipartHttpServletRequest 에는 멀티파트를 디코딩한 내용과 이를 참조하거나 조작할 수 있는 기능이 추가되어 있다.


○ 아래와 같이 HttpServletRequest 를 파라미터로 받은 건트롤러에서는 전달받은 오브젝트를 MultipartHttpServletRequest 로 캐스팅한 후에 멀티파트 정보를 가진 MultipartFile 오브젝트를 가져와 사용할 수 있다.


public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {                  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;     

MultipartFile multipartFile = multipartRequest.getFile("image");    

 .... 


○ 애노테이션 방식의 유연한 컨트롤러 메소드를 이용하면 처음부터 MultipartFile 타입의 파라미터로 전달받거나 변환기를 이용해서 아예 바이트 배열이나 파일 정보를 담은 오브젝트로 가져올 수도 있다.

'JAVA' 카테고리의 다른 글

multipart 클래스 사용 예제  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
MD5 암호화 예제  (0) 2019.02.27
mac address  (0) 2019.02.15
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] error

JAVA 2017. 11. 6. 11:21

ERROR


CharConversionException : 문자 변환의로 발생하는 예외의

base class입니다.


EOFException : 입력의 도중에, 예상외의 파일의 종료, 또는 예상외의 Stream의 종료가 있던 것을 나타내는 시그널입니다.


FileNotFoundException : 지정된 패스명으로 나타나는 파일이 열리지 않았던 것을 통지합니다.


InterruptedIOException : 입출력 처리로 세치기가 발생한 것을 통지하는 시그널을 발생시킵니다.


InvalidClassException : 직렬화 런타임이, 클래스에 도착해 다음의 문제의 어떤 것인지를 검출했을 때에 슬로우 됩니다.  


InvalidObjectException : 1 개(살) 이상의 직렬화 복원 오브젝트가 검증을 패스하지 않았던 것을 나타냅니다.  


IOException : 하등의 입출력 예외의 발생을 통지하는 시그널을 발생시킵니다.  


NotActiveException : 직렬화 또는 직렬화 복원이 액티브하지 않는 경우에 슬로우 됩니다.  


NotSerializableException : 인스턴스가 직렬화 가능 인터페이스를 가질 필요가 있는 경우에 슬로우 됩니다.  


ObjectStreamException : 오브젝트 Stream 클래스에 고유의 예외 모든 슈퍼 클래스입니다.  


OptionalDataException : 원시적 데이터가 읽히지 않은지, 또는 데이터의 마지막이 Stream내의 직렬화 오브젝트에 있기 (위해)때문에, 오브젝트의 read 조작이 실패한 것을 나타내는 예외입니다.  


StreamCorruptedException : 오브젝트 Stream로부터 읽힌 제어 정보가, 내부 정합성 검사에 위반하고 있었을 경우에 슬로우 됩니다.  


SyncFailedException : 동기 (sync) 오퍼레이션이 실패한 것을 통지합니다.  


UnsupportedEncodingException : 문자의 인코딩이 서포트되고 있지 않습니다.  


UTFDataFormatException : 부정한 구조를 가지는 UTF-8 스트링이, 데이터 입력 Stream내에 읽혔는지, 또는 데이터 입력 인터페이스를 구현하는 클래스에 의해 읽힌 것을 나타냅니다. 

 

WriteAbortedException : 기입 오퍼레이션중에 ObjectStreamException 가 슬로우 된 것을 통지합니다. 


java.lang


Java 프로그램 언어의 설계해 기본적인 클래스를 제공합니다. 무엇보다 중요한 클래스는 클래스 계층 루트 Object 와 실행시의 클래스를 나타내는 인스턴스 Class 입니다 

원시적형의 값을 오브젝트와 같이 나타내는 경우에는 자주(잘) 필요하게 됩니다. 래퍼 클래스 Boolean,Character,Integer,Long,Float, 및 Double 가 이 목적으로 사용됩니다. 

예를 들어,Double 형의 오브젝트는 double 형의 필드를 포함해, 참조형의 변수에 격납되는 앞에의 참조라고 하는 방법으로 값을 나타냅니다. 이 클래스는 원시적치의 사이에 변환하는 메소드를 제공하는 것과 동시에,equals 및 hashCode 등의 표준 메소드를 서포트합니다. 

클래스 Math 는, 탄젠트 (싸인), 여현 (코사인), 평방근이라고 하는 계산으로 자주(잘) 사용되는 함수를 제공합니다. 

클래스 String 및 StringBuffer 는 스트링으로 자주(잘) 사용되는 오퍼레이션을 제공합니다. 

클래스 ClassLoader,Process,Runtime, SecurityManager, 및 System 는, 동적인 클래스의 로드, 외부 프로세스의 작성, 일자등의 호스트 환경의 조회, 및 시큐러티 폴리시의 실시를 관리하는 「시스템 오퍼레이션」을 제공합니다. 

클래스 Throwable 는 throw 문 (§14. 16)에 의해 슬로우 되는 오브젝트를 포함 합니다. 

Throwable 의 서브 클래스는 에러와 예외를 나타냅니다.


예외의 개요 


ArithmeticException : 산술 계산으로 예외적 조건이 발생했을 경우에 슬로우 됩니다.  


ArrayIndexOutOfBoundsException : 부정한 인덱스를 사용해 배열이 액세스 된 것을 나타내기 위해서(때문에) 슬로우 됩니다. 


ArrayStoreException : 부정한 형태의 오브젝트를 오브젝트의 배열에 격납하려고 한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


ClassCastException : 어느 오브젝트를 상속 관계에 없는 클래스에 캐스트 하려고 한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


ClassNotFoundException : 어플리케이션이, 클래스의 스트링명을 사용해 다음의 메소드로 로드하려고 했지만, 지정된 이름의 클래스의 정의가 발견되지 않았던 경우에 슬로우 됩니다.  


CloneNotSupportedException : 오브젝트를 복제하기 위해서 Object 클래스의 clone 메소드가 불려 갔지만, 그 오브젝트의 클래스가Cloneable : 인터페이스를 구현하고 있지 않는 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


Exception : Exception 클래스와 그 서브 클래스는, 통상의 어플리케이션으로 캐치 될 가능성이 있는 상태를 나타내는 Throwable 의 형식의 1 개입니다.  


IllegalAccessException : 어플리케이션이, 배열 이외의 인스턴스 작성, 필드의 설정 또는 취득, 메소드의 호출을 시도했을 경우에, IllegalAccessException 가 슬로우 됩니다.  


IllegalArgumentException : 부정한 인수, 또는 부적절한 인수를 메소드에 건네준 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


IllegalMonitorStateException : 소정의 모니터를 가지지 않는 thread가 오브젝트의 모니터로 기다리는 것을 시도한 것, 혹은 다른 thread가 소정의 모니터를 가지지 않고 오브젝트의 모니터로 기다리는 것을 통지한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


IllegalStateException : 부정 또는 부적절한 때에 메소드가 불려 간 것을 나타냅니다.  


IllegalThreadStateException : 요구된 오퍼레이션에 대해서 thread 상태가 부적절한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


IndexOutOfBoundsException : 어떤 종류의 인덱스 (배열, 스트링, 벡터등)가 범위외인 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


InstantiationException : 어플리케이션이 Class 클래스의 newInstance 메소드를 사용해 클래스의 인스턴스를 생성하려고 했을 때에, 클래스가 인터페이스 또는 abstract 클래스이기 위해서(때문에) 지정된 오브젝트의 인스턴스를 생성할 수 없는 경우에 슬로우 됩니다.  


InterruptedException : 어느 thread가 오랫동안의 대기 상태, 휴지 상태, 또는 일시정지 상태일 때, 다른 thread가 Thread 클래스의 interrupt 메소드를 사용해 이 상태에 세치기를 걸었을 경우에 슬로우 됩니다.  


NegativeArraySizeException : 부의 사이즈를 가진 배열을 어플리케이션이 작성하려고 했을 경우에 슬로우 됩니다.  


NoSuchFieldException : 지정된 이름의 필드가 클래스에는 없는 것을 통지합니다.  


NoSuchMethodException : 특정의 메소드가 발견되지 않는 경우에 슬로우 됩니다.  


NullPointerException : 오브젝트가 필요한 경우에, 어플리케이션이 null 를 사용하려고 하면(자) 슬로우 됩니다.  


NumberFormatException : 어플리케이션이 스트링을 수치형으로 변환하려고 했을 때, 스트링의 형식이 올바르지 않은 경우에 슬로우 됩니다.  


RuntimeException : RuntimeException 는, Java 가상 머신의 통상의 처리로 슬로우 할 수가 있는 각종의 예외의 슈퍼 클래스입니다.  


SecurityException  : 시큐러티 매니저에 의해 슬로우 되어 시큐러티 위반을 나타냅니다.  


StringIndexOutOfBoundsException : String 메소드에 의해 슬로우 되어 인덱스가 부 또는 스트링의 사이즈보다 큰 일을 나타냅니다.  


UnsupportedOperationException : 요구된 오퍼레이션이 서포트되어 있지 않은 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


에러의 개요


AbstractMethodError : 어플리케이션이 abstract 메소드를 호출하려고 했을 경우에 슬로우 됩니다.  


AssertionError : 선언이 실패한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


ClassCircularityError : 클래스의 초기화시에 루프가 발견되었을 경우에 슬로우 됩니다.  


ClassFormatError : Java 가상 머신이 클래스 파일을 읽어들이려고, 파일이 망가져 있다고 판단했을 경우, 또는 클래스 파일로서 해석할 수 없는 경우에 슬로우 됩니다.  


Error : Error 는 Throwable 의 서브 클래스에서, 통상의 어플리케이션이면 캐치 해서는 안되는 중대한 문제를 나타냅니다. 


ExceptionInInitializerError : static 초기화자로 예상외의 예외가 발생한 것을 통지합니다.  


IllegalAccessError : 액세스 할 수 없는 필드에의 액세스나 변경, 혹은 액세스 할 수 없는 메소드의 호출을 어플리케이션이 시도했을 경우에 슬로우 됩니다.  


IncompatibleClassChangeError : 클래스 정의에 호환성이 없는 변경이 있었을 경우에 슬로우 됩니다.  


InstantiationError : 어플리케이션이 Java 의 new 구문을 사용해 abstract 클래스나 인터페이스의 인스턴스를 생성하려고 했을 때에 슬로우 됩니다.  

InternalError : Java 가상 머신내에서 예기치 않은 내부 에러가 발생한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


LinkageError : LinkageError 의 서브 클래스는, 어느 클래스가 다른 클래스에 의존관계(dependencies)가 있는 경우에, 전자의 클래스를 컴파일 한 뒤, 후자의 클래스에의 변경에 의해 호환성이 없어진 것을 나타냅니다.  


NoClassDefFoundError : 통상의 메소드 호출해, 혹은 new 식을 사용한 새로운 인스턴스의 생성으로, Java 가상 머신 또는 ClassLoader 인스턴스가 클래스 정의를 로드하려고 했지만, 클래스 정의가 보고 매운 있고 경우에 슬로우 됩니다.  


NoSuchFieldError : 오브젝트의 지정된 필드에 어플리케이션이 액세스, 또는 변경을 시도했을 때, 오브젝트에 그 필드가 없는 경우에 슬로우 됩니다.  


NoSuchMethodError : 어느 클래스의 특정의 메소드 (static 메소드, 또는 인스턴스 메소드)를 어플리케이션이 호출하려고 했을 때, 벌써 그 클래스에는 불려 간 메소드의 정의가 없는 경우에 슬로우 됩니다.  


OutOfMemoryError : 메모리 부족을 위해서(때문에) Java 가상 머신이 오브젝트를 할당하지 못하고, 가베지 수집가에 의해도 사용 가능한 메모리를 더 이상 확보 가능한 있고 경우에 슬로우 됩니다.  


StackOverflowError : 어플리케이션에서의 재귀의 회수가 너무 많아서 스택 오버플로우가 일어나는 경우에 슬로우 됩니다.  


ThreadDeath : ThreadDeath 의 인스턴스는,Thread 클래스의 인수 없음의 stop 메소드가 불려 가면(자), 대상이 되는 thread내에서 슬로우 됩니다.  


UnknownError : 미지이지만 중대한 예외가 Java 가상 머신으로 발생했을 경우에 슬로우 됩니다.  


UnsatisfiedLinkError : Java 가상 머신이,native 라고 선언된 메소드의 적절한 네이티브 언어의 정의를 찾아낼 수가 없는 경우에 슬로우 됩니다.  


UnsupportedClassVersionError : Java Virtual Machine 가, 클래스 파일의 read중에, 그 파일의 메이저 버젼 번호와 마이너 버젼 번호가 서포트되어 있지 않으면 판정했을 경우에 슬로우 됩니다.  


VerifyError : 클래스 파일이 적절한 형식에서도, 어떤 종류의 내부 모순 또는 시큐러티상의 문제가 있는 것을 「베리파이아 (verifier)」가 검출했을 경우에 슬로우 됩니다.  


VirtualMachineError : Java 가상 머신이 망가져 있는지, 또는 동작을 계속하는데 필요한 자원이 부족하게 된 것을 나타내기 위해서(때문에) 슬로우 됩니다. 


java.net


네트워크 대응 어플리케이션을 구현하기 위한 클래스를 제공합니다. 소켓 관련의 각 클래스를 사용해, 인터넷상의 임의의 서버와 통신하거나 독자적인 인터넷 서버를 구현하거나 할 수 있습니다. 인터넷상의 데이터의 취득에 URL (Universal Resource Locator)를 간단하게 사용할 수 있도록, 다수의 클래스를 제공하고 있습니다. 


예외의 개요 


BindException : 로컬인 주소 및 포토에 대해서 소켓의 바인드를 시행중에 에러가 발생한 것을 통지합니다. 

 

ConnectException : 리모트인 주소 및 포토에 대해서 소켓의 접속을 시행중에 에러가 발생한 것을 통지합니다. 


MalformedURLException : 무효인 서식의 URL 가 발생한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


NoRouteToHostException : 소켓을 리모트 주소 및 포토에 접속하려고 했을 때에 에러가 발생한 것을 나타냅니다.  


PortUnreachableException : ICMP 포토 도달 불가능 메세지가 접속된 데이터 그램에 수신된 것을 나타내는 시그널입니다.  


ProtocolException : 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


SocketException : 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


SocketTimeoutException : 소켓의 읽어들여 또는 수락으로 타임 아웃이 발생한 것을 나타내는 시그널입니다.  


UnknownHostException : 호스트의 IP 주소를 판정할 수 없었던 경우에 슬로우 됩니다.  


UnknownServiceException : 미지의 서비스 예외가 발생한 것을 나타내기 위해서(때문에) 슬로우 됩니다.  


URISyntaxException : 스트링을 URI 참조로서 해석할 수 없었던 것을 나타내기 위해서(때문에) 슬로우 된 확인 끝난 예외입니다. 

 

java.sql
JavaTM 프로그램 언어를 사용해 데이터 소스 (통상은 RDB)의 데이터에 액세스 해 처리하는 API 를 제공합니다. 이 API 에 포함되어 있는 체제로, 복수의 드라이버를 인스톨 해 복수의 데이터 소스에 동적으로 액세스 할 수가 있습니다. JDBCTM API 는 주로 SQL 문을 데이타베이스에 건네주기 위해서(때문에) 만들어지고 있습니다만, 겉(표) 형식의 임의의 데이터 소스의 데이터의 read 및 기입을 제공합니다. javax.sql.RowSet 인터페이스 그룹을 개입시켜 사용 가능한 읽어들여/기입 기능은, 스프레드쉬트, 플랫 파일, 또는 다른 겉(표) 형식의 데이터 소스의 데이터를 사용하거나 갱신하기 위해서 커스터마이즈 할 수 있습니다.

예외의 개요 

BatchUpdateException : 배치 갱신 오퍼레이션중에 에러가 발생했을 때에 슬로우 되는 예외입니다.  


DataTruncation : JDBC 가 예기 하지 않고 데이터의 값을 잘라 버리는 경우에, DataTruncation 경고를 통지하는 (read시)인가, DataTruncation : 예외를 슬로우 하는 (기입시) 예외입니다. 

 

SQLException : 데이타베이스 액세스 에러 또는 그 외의 에러에 관한 정보를 제공하는 예외입니다.  


SQLWarning : 데이타베이스 액세스의 경고에 관한 정보를 제공하는 예외입니다. 


java.util

이 패키지에는, 콜렉션 체제, 유산 콜렉션 클래스, 이벤트 모델, 일시 기능, 국제화, 및 다양한 유틸리티 클래스 (StringTokenizer, 난수 제너레이터, 및 비트 배열)가 포함되어 있습니다. 

예외의 개요 

ConcurrentModificationException : 이 예외는, 오브젝트의 동시 변경을 검출한 메소드에 의해, 그러한 변경이 허가되어 있지 않은 경우에 슬로우 됩니다.  

EmptyStackException : Stack 클래스의 메소드에 의해 슬로우 되어 그 스택이 하늘인 것을 나타냅니다. 

MissingResourceException : 자원이 결핍 하고 있는 것을 통지합니다.  

NoSuchElementException : 이 열거에 그 이상의 요소가 없으면Enumeration 의 nextElement 메소드에 의해 슬로우 됩니다.  

TooManyListenersException : TooManyListenersException 는, Java 이벤트 모델의 일부로서 통상은 멀티 캐스트의 이벤트 소스를 uni-cast의 특수한 케이스이다고 주석을 붙여 구현하기 위해서 사용합니다. 

org.xml.sax 

예외  
SAXException 
SAXNotRecognizedException 
SAXNotSupportedException 
SAXParseException 

 

error 팁 :  

많이 볼 수 있는 예외가 있습니다.


ArithmeticException -> 산술에러로서 0으로 나눈다든가등의 산술적 계산 오류에서 일어납니다.


ArrayIndexOutofBoundsException -> 배열의 크기가 주어진 값을 넘어갔을 때 일어납니다.


NullPointException -> local변수의 초기화를 해주지 않을 경우 일어납니다



'JAVA' 카테고리의 다른 글

[JAVA] extends T  (0) 2017.11.07
[JAVA] 에러정의 web.xml  (0) 2017.11.07
[JAVA]EncodingFilter 구현  (0) 2017.11.06
[JAVA]Download outOfMemory  (0) 2017.11.03
[JAVA]Dispatche :: request.getRequestDispatcher("/prg/board_excel.jsp");  (0) 2017.11.03
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

dbconnection 끊어지는 현상


DB 연결 부분은 아래와 같은 설정입니다. 


server.xml 또는 context.xml

<Resource name="jdbc/MyDS" auth="Container"         type="javax.sql.DataSource"

        username="nextree"

        password="xxx"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://localhost:3306/nextree"/>


다음과 같은 예외가 가끔 떨어지고 다시 접속하면 연결이 잘 됩니다.


<에러 내용>

Caused by: java.sql.SQLException: Already closed.

at org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:84)


at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:181)


at 

org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:313)

...


<원인>

Tomcat이 DB pool에서 MySQL connection을 물고 있더라도 MySQL 입장에서는 오래된 connection을 문제라고 생각하고 끊어버립니다.

오랜만에 애플리케이션에 접속하여 끊어진 connection을 사용할 경우 발생 합니다.

즉 Tomcat이 사용하는 DB pool인 DBCP가 MySQL에 의해 끊어진 connection을 주고 애플리케이션이 이걸 사용하려다가 발생하는 에러 입니다. 


<해결책>

DBCP가 connection을 돌려주기 전 해당 connection이 살아있는지 검사하는 설정을 해야 합니다.


<Resource name="jdbc/MyDS" auth="Container"         type="javax.sql.DataSource"

        username="nextree"

        password="xxx"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://localhost:3306/nextree"

        validationQuery="select 1" />


validationQuery 설정은 DBCP가 connection을 반환하기전 설정된 쿼리를 날려 connection이 유효한지 검사하고 유효하지 않다면 다시 연결하여 유효한 connection을 반환합니다.


이 설정은 대부분의 WAS가 모두 지원하고 운영서버에서 반드시 해주어야하는 설정입니다.

그 외 운영 서버에서 권하는 설정은 아래 URL을 참조 해주시기 바랍니다.




http://commons.apache.org/dbcp/configuration.html

'JAVA' 카테고리의 다른 글

[JAVA]Download outOfMemory  (0) 2017.11.03
[JAVA]Dispatche :: request.getRequestDispatcher("/prg/board_excel.jsp");  (0) 2017.11.03
[JAVA] DateUtil2  (0) 2017.11.01
[JAVA]DateUtil  (0) 2017.11.01
[JAVA] context root path  (0) 2017.11.01
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,