- @참고: blog.naver.com/PostView.nhn?blogId=s0215hc&logNo=221749782235&parentCategoryNo=&categoryNo=25&viewDate=&isShowPopularPosts=false&from=postView

 

상황

톰캣에서 동일한 ip에서 port를 여러개 실행할 때 1번 서버의 세션을 2번 서버가 session_id를 가져와 체그해서 로그인이 만료되는 문제가 있었다.

해결

server.xml에서 context에 sessionCookieName을 다르게 설정해준다.

<Context sessionCookieName="template_JSESSIONID" docBase="template-pjt-mvc" path="/" reloadable="false" source="org.eclipse.jst.jee.server:template-pjt-mvc"/></Host>
블로그 이미지

uchacha

개발자 일지

,

- @참고: stackoverflow.com/questions/16321819/no-spring-webapplicationinitializer-types-detected-on-classpath

 

상황

잘되던 웹앱이 실행 시 WebApplicationContext를 못가져오고 실행이 되어 요청을 해보면 404로 못찾겠다 한다.

 

해결

info 레벨로 나온 아래 문구가 키 에러 메세지인 것 같아서 찾아봤더니 tomcat을 clean해줘야 한다는 듯..

- key error message: No Spring WebApplicationInitializer types detected on classpath

 

블로그 이미지

uchacha

개발자 일지

,

컴퓨터는 음수를 맨 앞 자리를 1이면 음수로 인식, 0이면 양수로 인식한다.

Java 자료형 byte인 경우 1byte는 8bit이므로 8칸을 사용하게 되고, 맨 앞자리는 부호 표현으로 쓰여 

-128(10000000)~127(01111111)까지 표현할 수 있다.

여기서 양수는 우리가 생각하는 이진법 계산을 그대로 하여 10진법으로 변경하면 되지만,

음수는  - ( 수를 반전 후 + 1을 하여 계산한 값 ) 이 10진법으로 변환한 값이다.

따라서 위의 byte를 int로 바꾼다면 byte의 -128 ~ 127 범위를 컴퓨터는 이진수로 다음과 같이 표현이 될 것이다.

11111111111111111111111110000000 ~ 00000000000000000000000001111111

System.out.println(Integer.toBinaryString(-128)); //11111111111111111111111110000000
System.out.println(Integer.toBinaryString(127)); //1111111

 

 

또한 컴퓨터에서 10진수로 변환하는 방법이 다르므로 unsigned 값과 abs 값은 다를 수 밖에 없다.

-128부터 unsigned를 계산해보면

-128(11111111111111111111111110000000) -> 128(10000000)

-127(11111111111111111111111110000001) -> 129(10000001)

...

이므로 -128 -(절댓값)-> 128

-127 -(절댓값)-> 127

...

과는 그 결과가 다른 것이다.

 

블로그 이미지

uchacha

개발자 일지

,

별 황당한 에러를 다 겪는다..

프로젝트를 클릭하면 내용물이 펼쳐져야 하는데 갑자기 펼쳐지지 않는다.

spring legacy project를 잘 깔았다가 어느순간부터 다시 spring configuration xml만 보이길래 market place에서 spring add on 을 지우고 다시 깔았더니 벌어진 일이다..

 

restart해서 다시 켜보기도 하고

spring add on 을 다시 한번 지우고 깔아보기도 하고..

workspace의 .meta plugin에서 resource 관련 파일을 지워보기도 하고(다른 workspace에서도 동일하게 펼쳐지지 않고 있어서 eclipse 프로그램의 문제이지 workspace 문제는 아닐 것 같긴 했다.)

문제는 해결 안되고..

 

그래서 eclipse를 다시 지우고 깔았더니 펼쳐진다..

뭔 이런 에러가 다있나 싶다.. 

에휴.. 

블로그 이미지

uchacha

개발자 일지

,

- @properties editor 설치: programmersought.com/article/13403066396/

- @이클립스 플러그인 설치 에러: friday.fun25.co.kr/blog/?p=164

- @이클립스 플러그인 제거: wiki.eclipse.org/FAQ_How_do_I_remove_a_plug-in%3F

 

상황

eclipse에서 properties 파일은 default로 unicode로 표현한다고 한다.

현재 사용중인 eclipse 2019-09 버전에서는 market place에 properties editor가 버전이 낮아 검색이 안되므로 

help > install new software로 설치하였다.

 

방법

1. help > install new software에서 work with: 아래 주소

http://propedit.sourceforge.jp/eclipse/updates/

를 붙여넣기 한 후 Add를 누른다. 이름은 적당히 properties-editor라 넣었다.

불러온 항목 중 마지막 PropertiesEditor를 클릭한 후 install 해준다.

2. 이때 설치 중 다음과 같은 에러가 나는 경우 

‘Installing Software’ has encountered a problem.
An error occurred while collecting items to be installed
...
An error occurred while collecting items to be installed
session context was:
...
No repository found containing:

레파지토리를 찾을 수 없거나 인증과정에 문제가 생겨 플러그인을 설치할 수 없는 상황이라고 한다.

sts를 관리자 권한으로 실행 후 install new software 시 Contact all update sites during install to find required software 옵션 체크를 해제한다.

3. eclipse restart 후 properties가 이미 열려있다면 닫고 다시 연다.

 

** 참고

- 설치 적용 확인은 Toolbars > Window > Preferences > General > Editors > File Associations > *.properties를 보면 PropertiesEditor가 default로 선택되어있는 걸 볼 수 있다.

- 플러그인 삭제는 Toolbars > Help > About Eclipse > Installation Details > 원치 않는 plugin을 찾아서 Uninstall 한다.

 

주소찾기

help > eclipse market place에서 properties 검색 후 맨 밑의 Browse for more solutions를 눌러 주소를 찾을 수 있다.

 

블로그 이미지

uchacha

개발자 일지

,
블로그 이미지

uchacha

개발자 일지

,

- @참고: kamang-it.tistory.com/entry/%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8Eclipse-%EC%83%81%EC%9C%84%EB%B2%84%EC%A0%84%EC%9C%BC%EB%A1%9C-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%ED%95%98%EA%B8%B0

 

상황

Eclipse 2018 버전을 사용하고 있었는데 프로젝트에 Spring Framework를 사용하려 Market Place에서 STS를 추가하려 하였다. 검색된 버전은 Spring 3 3.9.3REALESE이고 해당 버전을 설치해도 configuration file 생성밖에 되지 않았다. 구글링 해보니 Spring Tools 3 Add On을 설치해줘야 한다는데 해당 Tool 사용이 가능한 Eclipse Version이 2020 버전에 해당하게 되었다. 그래서 Eclipse를 2020버전으로 업데이트하려 한다.

 

주의점

내가 사용했던 기존 jdk 버전이 1.8인데 Eclipse는 2020-06 버전 이후에는 최소 java version이 11이다.

업데이트할 Eclipse 버전이 사용할 jdk 버전을 지원하는지 확인해봐야 한다.

 

해결

자체 버전업 방법

1.

Window > Preferences > Install/Update > Available Software Sites

add http://download.eclipse.org/releases/(버전) 

내 경우 (버전) 부분은 2020-06

 

2.

Help > Check for Updates

 

후기

* 설치하는데 한 10분쯤 걸린 것 같고, restart하려는데... 현재 6분이 지났다... restart 왜이렇게 오래 걸리는건지..

응답 없음 시 끄고 다시 실행했더니 진입창 부터 2020-12라 뜨며 잘 뜬다.

그러나 다른 work space를 새로 열었을 때 기존 Java version 1.8을 지원하지 않는다며 에러창을 prompt 했고, 해결을 위해 ini 파일의 version 두곳을 1.8로 바꿔달라는 내용을 참고했으나 log를 확인해보라는 에러 창이 뜨며 log 내용은 아래와 같았다.

 그래서 결국 아예 새로 2020-06버전을 설치했다.

더보기
java.lang.RuntimeException: Application "org.eclipse.ui.ide.workbench" could not be found in the registry. The applications available are: org.eclipse.datatools.connectivity.console.profile.StorageFileEditor, org.eclipse.ant.core.antRunner, org.eclipse.equinox.app.error, org.eclipse.jdt.apt.core.aptBuild, org.eclipse.jdt.core.JavaIndexer, org.eclipse.jdt.core.JavaCodeFormatter, org.eclipse.pde.junit.runtime.uitestapplication, org.eclipse.pde.junit.runtime.coretestapplication, org.eclipse.pde.junit.runtime.coretestapplicationnonmain, org.eclipse.pde.junit.runtime.nonuithreadtestapplication, org.eclipse.wst.server.preview.preview.
	at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:252)
	at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:33)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
블로그 이미지

uchacha

개발자 일지

,

- @참고: okky.kr/article/653163

- @참고: aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-linux-resolve-ssh-connection-errors/

 

오류메세지 "Error connecting to [instance], reason: Connection timed out: connect"

인스턴스 연결에 문제가 있고, 요청이 인스턴스에 도달하지 못하고 시간이 초과하였음을 의미합니다. SSH가 인스턴스에서 실행되고 있지 않거나 방화벽이 액세스를 차단하는 경우 이러한 문제가 발생할 수 있습니다.

  • url ip 오류
  • application이 구동 안되고 있을 때
  • 방화벽으로 인해 요청이 application으로 도달을 못할 때

 

오류메세지 "ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection refused"

인스턴스가 연결을 거부했거나 SSH 서비스 데몬이 실행되고 있지 않음을 나타냅니다. 방화벽에서 인스턴스에 대한 액세스를 거부하는 경우에도 이 오류가 발생할 수 있습니다.

  • ip는 연결 되나 port 연결이 안될 때

 

해결방법

  1. 해당 application이 도는 web browser에서 url로 연결 시도해본다. -> application이 구동중인지, url 주소가 맞는지 확인 가능
  2. 1번이 잘 되면 방화벽이 작동하고 있는건 아닌지 확인해본다. 요청 서버에서 web browser로 요청 해본다.
블로그 이미지

uchacha

개발자 일지

,