내용출처 : http://www.heidilux.com/2014/02/setup-git-server-synology-nas/


DSM 5.0-4458 Update 2 에서 테스트 하였다.


1. 제어판 -> 터미널 및 SNMP 메뉴에서 SSH 서비스 활성화를 체크 하고 적용 버튼을 누른다.


2. 패키지 센터에서 Git Server 를 설치 한다.


3. git 용 사용자를 만든다. (디렉토리, 응용프로그램에 관한 어떤 권한도 주지 않아도 된다.)


4. 제어판 -> 사용자 메뉴에서 사용자 홈 서비스를 활성화 한다.



5. 메인메뉴 -> git server 에서 git 용 사용자 접근허용에 체크 하고 적용 버튼을 누른다.



6. ssh 로 접속 한다. (root)


7. git용 사용자의 홈디렉토리에 git repository 를 생성 하고 접근 권한을 변경 한다.



8. pc 에서 git clone 으로 테스트 한다.

git clone ssh://gituser01@192.168.0.140/var/services/homes/gituser01/my_project.git




push 를 할 때 혹시 아래와 같은 에러 메세지를 보게 되면 디렉토리의 권한을 다시 한번 확인 한다.

git.exe push --progress  "origin" master:master


Counting objects: 3, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 217 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

remote: error: insufficient permission for adding an object to repository database ./objects

remote: fatal: failed to write object

error: unpack failed: unpack-objects abnormal exit

To ssh://gituser01@192.168.0.140/var/services/homes/gituser01/my_project.git

! [remote rejected] master -> master (unpacker error)

error: failed to push some refs to 'ssh://gituser01@192.168.0.140/var/services/homes/gituser01/my_project.git'


git did not exit cleanly (exit code 1) (3563 ms @ 2014-04-22 오전 3:32:54)










참고 : 스프링 3.x 트랜잭션

In proxy mode (which is the default), only external method calls coming in through the proxy are intercepted. This means that self-invocation, in effect, a method within the target object calling another method of the target object, will not lead to an actual transaction at runtime even if the invoked method is marked with @Transactional.



질문

////////////////////////////// 

//예제소스 

////////////////////////////// 

@Service("testService") 

public class TestServiceImpl extends AbstractServiceImpl implements TestService 

@Resource(name = "testDao") 

private TestDao testDao; 


@Transactional(propagation = Propagation.REQUIRES_NEW) 

@Override 

public void txTest() 

HashMap<String, String> data01 = new HashMap<String, String>(); 

data01.put("ID", "0000001"); 

data01.put("NAME", "스파이더맨"); 

testDao.createTest01(data01); 


@Transactional(propagation = Propagation.REQUIRES_NEW) 

@Override 

public void txTest1() 

HashMap<String, String> data02 = new HashMap<String, String>(); 

data02.put("ID", "0000002"); 

data02.put("NAME", "배트맨"); 

testDao.createTest01(data02); 


HashMap<String, String> data01 = new HashMap<String, String>(); 

data01.put("ID", "0000001"); 

data01.put("NAME", "스파이더맨"); 

testDao.createTest01(data01); 


@Transactional 

@Override 

public void txTest2() 

txTest(); 

txTest1(); 


# 현재 상황 

ID 는 등록하고자 하는 테이블의 KEY 로 중복 등록 하면 예외가 발생 합니다.


Controller 에서 txTest 와 txTest1 을 따로 호출 하면 스파이더맨만 등록이 되고 배트맨은 등록이 안되는 원하는 결과를 얻을 수 있습니다. 


Controller 에서 txTest2를 호출 하면 모두 등록이 안되고 있습니다. (호출한 두 메소드 전체에 걸쳐 트랜잭션 적용됨) 


txTest2 에서 @Transactional 을 제거 하고 호출 하면 스파이더맨과 배트맨이 모두 등록이 됩니다. (트랜잭션 적용 안됨) 


txTest2 의 @Transactional 을 @Transactional(propagation = Propagation.REQUIRES_NEW) 로 변경해 보았는데 호출한 두 메소드 전체에 걸쳐 트랜잭션이 적용 됩니다. 


# 질문 

Controller 에서 txTest2 메소드를 호출 하여 

txTest() 에서 등록 된 값은 commit 이 되고 

txTest1() 에서 등록 된 값은 rollback 이 되게 하고 싶습니다. 

(스파이더맨만 등록이 되고 배트맨은 등록이 안되는 원하는 결과) 

방법이 없나요?


답변

안녕하세요. 표준프레임워크센터입니다.


Transactional은 Proxy기반으로 동작하기 때문에 직접호출(자기 호출)은 Transaction이 적용되지 않습니다.


즉, txTest2메소드에서 txTest, txTest1을 직접 호출하는 방식으로는 두 메소드의 Transaction이 먹지 않습니다.


처음에 하셨던것처럼 Controller를 통해 txTest, txTest1을 호출하시거나


txTest, txTest1 메소드를 외부 클래스로 빼서(인터페이스 기반이어야합니다) txTest2에서 호출하는 방식으로 


Transaction을 적용하시기 바랍니다.


감사합니다.


이걸 몰라서 한참 헤메었다.

pom.xml

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat6-maven-plugin</artifactId>

<version>2.2</version>

<configuration>

             <!-- http port -->

   <port>8090</port>

            <!-- Using a different context path -->

   <path>/</path>

</configuration>

</plugin>


기본 포트와 기본 컨텍스트 이름을 사용하지 않을 때 설정 한다.


출처 : 

http://stackoverflow.com/questions/18511774/how-to-configure-maven-tomcat-port-in-eclipse

http://mojo.codehaus.org/tomcat-maven-plugin/configuration.html

groupId

그룹, 회사, 팀, 조직 프로젝트 또는 다른 그룹을 나타내며, 관례상 그룹 식별자는 프로젝트를 생성한 조직의 도메인 명을 java의 패키지 명처럼 거꾸로 표기하는 것이다. 


artifactId

groupId의 하위에 존재하는 각각의 프로젝트를 표현하는 유일한 식별자 이다.


version 

프로젝트의 특정한 배포(release)를 나타낸다. 프로젝트가 릴리스되었을 때 확정된 버전이 부여되며, 이 버전을 바탕으로 구성된 식별자를 통하여 프로젝트의 특정 버전을 지칭할 수 있게 된다. 프로젝트의 개발이 계속 진행중이라면 SNAPSHOT과 같이 버전으로 표기된 특별한 식별자를 사용하여 프로젝트의 버전을 구분할 수 있다.


packaging

프로젝트의 형태는 기본적으로 jar이며, 프로젝트가 생산하는 패키지된 아티팩트로 결정된다. packaging 이 jar인 프로젝트는 JAR 아카이브를 생산하며, 패키징이 war인 프로젝트는 웹 애플리케이션을 생산한다.



출처 : Sonatype이 만든 Maven 핵심 가이드

property 파일을 CLASSPATH 에 넣고 ClassLoader.getSystemResource 를 사용해서 불러올 때

property 파일의 위치가 패키지 않에 있다면 package 명 까지 정확하게 적어줘야 한다.


당연한데 나만 몰랐나...


Properties prop = new Properties();


try

{

   prop.load(ClassLoader.getSystemResource("org/redgura/property/conifg.properties").openStream());

}

catch (IOException e)

{

   e.printStackTrace();

}


String time = prop.getProperty("TIME");




같은 세션에서 시퀀스의 다음 값을 한번 조회한 다음에 사용하면 오류가 발생하지 않는다.


현재 값을 구하기 위해서는 맨 마지막으로 조회된 값을 조회 해도 된다.


SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'TB_ZZTRACE_SQ01';


외부에서 내 컴퓨터(Host) 의 VM(Guest) 으로 접근하기 위하여 NAT 설정을 한다.




1. Virtual Machine Settings 에서 Network connection 을 NAT로 설정 한다.


2. Virtual Network Editor 에서 NAT Type 의 Network 을 선택하고 NAT Settings 버튼을 누른다.

Subnet IP 와 Subnet mask 를 확인 해둔다.



3. Add 버튼을 눌러서 Host 에서 Guest 에의 Port Forwarding 을 설정 한다.

NAT Settings 에서 Gateway IP 를 확인 해둔다.



4. Host 로 들어오는 TCP 8078 Port 에 대한 요청은 Guest 192.168.56.131 의 8078 Port 로 Forwarding 하라는 설정 이다.



5. 네트워크 연결에서 1번에서  NAT Type 의 Network 와 같은 이름을 가진 Network 를 선택하고 속성 TCP/IP v4 속성 으로 들어 간다.



6. 위와 같이 IP와 서브넷마스크를 설정 한다.



7. Guest 에서는 위와 같이 Network 를 설정 한다.

3번에서 확인한 Gateway IP 와 Subnet mask 를 적는다.


8. Guest 에서 8078 Port로 Socket Server 를 띄우고 외부에서 접근을 테스트 한다.

UDP 137 

UDP 138 

TCP 139 

TCP 445


ERMaster


이클립스에서 간단하게 ERD를 작성하기 위해서 설치한 플러그인

작은 용량에도 불구하고 많은 기능을 가지고 있다.




출처 : How to Write Doc Comments for the Javadoc Tool




java 소스 디렉토리의 패키지 최상위 디렉토리에 package.html 을 작성 한다.

package.html 은 <body> 태그만으로 구성 되며, 그 안에 패키지 설명을 적는다.


이후 java doc을 생성하면 아래와 같이 패키지 주석을 볼 수 있다.





+ Recent posts