반응형

 

query did not return a unique result: 3

해당오류는 select 결과를 VOclass형태로 받는 부분에서 오류가 났다

 

VOclass return = repository.findByXXX(param);

 

select 결과가 row 수가 3인데 List<VOclass> 형태로 받지않고 VOclass로 받아서 생긴 오류였다.

 

만약에 select 결과가 여러 row를 받는게 맞으면 List<VOclass>형태로 타입을 변경해주면되고,

 

아니면 관련 여러 row가 나오지않도록 소스코드를 수정하고 필요없는 데이터는 삭제해주면된다.

 

반응형
반응형

객체에 toString()을 하면 원하는 문자열이 나와야할 것 같은데

 

어쩔땐 원하는 문자열이 나오고, 어쩔땐 클래스명과  16진수 형태로 나온다.

 

클래스명@16진수 형태로 나오는 경우는 toString메서드를 오버라이드(재정의)하지 않아,

 

모든 클래스의 최상위 조상인 Object의 toString메서드를 호출하기 때문이다.

 

아래 코드는 Object클래스의 toString메서드 부분이다.

 

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

 

클래스를 새로 생성하면 디버깅을 위해서라도 클래스의 정보들을 잘 드러낼 수있도록,

 

원하는 내용으로 재정의를 하는 것이 좋겠다.

(아래는 간단히 변수에 대한 정보를 가져오는 toString메서드 오버라이딩 예시)

 

    @Override
    public String toString() {
        return "변수 = " + 변수;
    }

 

반응형
반응형

400 505번 http error code 출력되는 취약점 발생했다.

 

톰캣/conf/web.xml에

 

<error-code>400</error-code>
    <location>/error.html</location>
</error-page>
<error-page>
    <error-code>401</error-code>
    <location>/error.html</location>
</error-page>
<error-page>
    <error-code>403</error-code>
    <location>/error.html</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/error.html</location>
</error-page>
<error-page>
    <error-code>405</error-code>
    <location>/error.html</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error.html</location>
</error-page>
<error-page>
    <error-code>501</error-code>
    <location>/error.html</location>
</error-page>

 

정의를 하고 server.xml파일의 docBase에 error.html을 넣었는데 404는 error.html이 제대로 나오는데

 

400에러는 톰캣 디폴트 에러페이지가 나온다.

 

 

400에러나 505에러의 경우에는 버전에따라 적용이 안되는건지

 

톰캣/conf/server.xml에

<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"
errorCode.0="{경로}/error.html" />

 

위와같이 추가하니 적용이됬다(0은 기본 오류페이지이고, 0대신 에러코드를 지정해서 적용할 수 있다.)

 

errorCode 속성은 현재 프로젝트의 톰캣 8.5.82기준 지원하고있다. (몇버전부터인지는 잘..)

https://tomcat.apache.org/tomcat-8.5-doc/config/valve.html

 

Apache Tomcat 8 Configuration Reference (8.5.84) - The Valve Component

When using mod_jk or mod_proxy_ajp, the client's session id is used to determine which back-end server will be used to serve the request. If the target node is being "drained" (in mod_jk, this is the DISABLED state; in mod_proxy_ajp, this is the Drain (N)

tomcat.apache.org

 

반응형
반응형
Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.

 

이클립스에서 maven 프로젝트 톰캣 실행시 위와 같은 오류가 발생하였다.

 

1. 해당 프로젝트 WEB-INF/web.xml에서 맨 상단에 있는 버전을 2.5→ 3.0으로 변경하였다.

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.sun.com/xml/ns/j2ee" version="3.0" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd">

 

2.  그리고 아래처럼 display-name 태그 바로 밑에 absolute-ordering 태그를 추가하였다.

<display-name>WEB</display-name>
<!-- display-name 아래에 -->
<absolute-ordering\>
<!-- absolute-ordering 추가 -->

 

반응형
반응형

21번 포트를 사용하고 있는 프로그램인데,

보안이슈로 인해 21번 포트를 사용하려면 해당 서버에 21포트 사용하는 ip를 제외하고는 접근제한을 해달라는 요청이 왔다.

해당 웹서버에서는 21번 포트를 사용하는건 접근제한이 안되있다고해서 다른 pc에서 리눅스 서버와 cmd로 ftp 접속시도를 해보았고 방법은 각각 아래와 같다.

리눅스에서 ftp 접속하는 방법
# ?.?.?.? ftp 접속하려는 ip주소
ftp ?.?.?.? 21


1. 연결이 잘 된 경우

Connected to ?.?.?.? (?.?.?.?).
111 warnning welcome


잘된 경우 welcome이 뜨면서 계정정보과 비밀번호 입력하라고 차례대로 나온다.
정확한 계정 정보를 입력하면 Login successful.

2. 연결이 안된 경우

Connected to ?.?.?.? (?.?.?.?).
421 Service not available.


윈도우 cmd창에서 ftp 접속하는 방법
# ftp를 입력후 
ftp
# 'open {접속할아이피주소} {포트}' 입력
ftp> open ?.?.?.? 21


1. 연결이 잘 된 경우

?.?.?.?에 연결되었습니다.
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.


잘된 경우 계정정보과 비밀번호 입력하라고 차례대로 나온다.
정확한 계정 정보를 입력하면 Login successful.

2. 연결이 안된 경우

?.?.?.?에 연결되었습니다.
421 Service not available.
원격 호스트에 의해 연결이 닫혔습니다.



연결이 안된 경우 421 Service not available. 에러가 나온 경우는

21포트 사용하는 해당 서버가 아닌 다른 pc에서 테스트한 경우에 발생했다.
(운영중인 웹서버만 자기 자신 서버 즉, 로컬 서버만 21포트를 사용하도록 설정이 되어있음)

결국 로컬에서만 21포트를 사용하도록 잘 설정이 되어 있었음을 확인하였다.

아래 이미지는 21포트를 허용할 host정보 내용이다.(hosts.deny는 ALL:ALL로 설정되어 있다.)

반응형
반응형

 

인텔리제이에서 Local Changes 기능은 유용하다.

 

위 이미지와 같이 git이나 svn에 연동한 경우 로컬소스 파일이 생성 및 수정 된 부분이 생기면 Changes목록에 나타난다.

 

Local Changes 항목이 활성화 되지 않은  경우 활성화 하는 방법은 아래와 같다.

 

File > Settings... 클릭

 

Version Control > Commit > Use non-modal commit interface 체크박스 해제 후 Apply > OK

 

적용하면 intellij Local Changes 탭이 활성화된다.

반응형
반응형


디스크가 full이되서 어디서 용량이 많이 차지하는지 확인이 필요했다.

# 현재 디렉토리 기준, 용량 큰 순서대로 디렉토리명과 용량 보여주기
du -h --max-depth=1 | sort -hr


위와같이 루트서부터 동일한 명령어로 큰용량을 차지하는 디렉토리를 추적했다.

확인해보니 오래된 database백업 파일들이 여럿 있었고,

database를 통으로 백업하기에 꽤나 큰 용량이었다.

이러한 삭제하지 않은 데이터가 있는데 계속해서 새로 백업을 하고있었다.

원래 삭제되야하지만 (오류 등으로 인해) 삭제되지 않았던 database백업파일들이 2021년 8월에 해당하는 파일들이라서

많은 양의 백업파일들중 2021년 8월에 해당하는 백업파일만 조회하고 삭제하기로 하였다.

# 날짜기준 파일 보여주기
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2021-08
# 날짜기준 파일 삭제하기
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2021-08 | awk '{print $2}' | xargs rm -f


삭제하고 나니


디스크가 87%로 확인됬다. 끝

반응형
반응형

뭘 잘못눌렀는지 노션이 영어로 바뀌어 버렸다.

 

슬래쉬를[/]치고 명령어를 써서 사용하는게 많은데, 영어로 바뀌어버리니 마우스로 직접클릭하는 귀찮음..

 

노션 영어로 된 상태에서 한국어로 바뀌도록 설정을 해본다.

 

우선  데스크탑 어플리케이션에 로그인 한 후 좌측 상단부분에 Settings & members를 클릭한다

 

 

그다음 좌측에서 Language & region을 선택하고 Language에서 한국어로 선택하면

 

 

아래처럼 한국어로 변경할꺼냐는 알림창이 뜬다. Update버튼을 누르면 

 

 

한국어로 변경이 된다.

 

반응형

+ Recent posts