1. globals.propeties에 접속정보 추가

경로 : /src/main/reousrces/egovframework/egovProps/globals.properties 




#ms-sql:DB

Globals.ms.DriverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

Globals.ms.Url=jdbc:sqlserver://127.0.0.1:1433;databaseName=디비명 

Globals.ms.UserName=사용자

Globals.ms.Password=비밀번호






2. context-datasource.xml 에 추가

경로 : /src/main/reousrces/egovframework/spring/com/context-datasource.xml



    <alias name="dataSource-ms" alias="ms.dataSource" />


    

    <bean id="dataSource-ms" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

        <property name="driverClassName" value="${Globals.ms.DriverClassName}"/>

        <property name="url" value="${Globals.ms.Url}" />

        <property name="username" value="${Globals.ms.UserName}"/>

        <property name="password" value="${Globals.ms.Password}"/>

        <property name="initialSize" value="0"/>

        <property name="maxActive" value="1"/>

        <property name="maxIdle" value="1"/>

        <property name="minIdle" value="0"/>

        <property name="maxWait" value="-1"/>

    </bean>

 

 


3. context-sqlMap.xml 에 추가

경로 : /src/main/reousrces/egovframework/spring/com/context-sqlMap.xml



        

    <bean id="ms.sqlMapClient" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">

        <property name="configLocations">

            <list>

                <value>classpath:/egovframework/sqlmap/config/ms/*.xml</value>

            </list>

        </property>

        <property name="dataSource" ref="dataSource-ms"/>

        <property name="lobHandler" ref="lobHandler"/>

    </bean>




4. sqlmap/config에 추가


경로 : /src/main/reousrces/egovframework/spring/sqlmap/config/ms/sql-map-config-ms.xml


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"

    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">


<sqlMapConfig>

<sqlMap resource="egovframework/sqlmap/ms/SQL_Ms.xml"/>

</sqlMapConfig> 





5. SQL_Ms.xml 생성


경로 : /src/main/reousrces/egovframework/spring/sqlmap/ms/SQL_Ms.xml


내용은 기존 방식과 동일







6. EgovAbstractDAO를 상속받는 DAO 클래스 생성


적절한 service 패키지 내에 생성한다.



public class EgovMssqlAbstractDAO extends EgovAbstractDAO {


@Override

@Resource(name = "ms.sqlMapClient")

public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {

super.setSuperSqlMapClient(sqlMapClient);

}


}





7. DAO클래스 생성


import 서비스위치.EgovMssqlAbstractDAO;


@Repository("mssqlDAO")

public class MssqlDAO extends EgovMssqlAbstractDAO{



    public List<?> selectUser(String uniqId){

        return List<?> select("mssqlDAO.selectUser"uniqId);

    }


}





8. ServiceImpl 설정



@Service("testService")

public class TestServiceImpl extends EgovAbstractServiceImpl implements TestService {


/** mssqlDAO */

@Resource(name="mssqlDAO")

private MssqlDAO mssqlDAO;


@Override

public List<?> selectUser(String uniqId) {

List<?> resultList = mssqlDAO.selectUser(uniqId);

return resultList;

}






9. 컨트롤러내 추가(기존 방식과 동일)


/** testService */

@Resource(name = "testService")

private TestService testService;



@RequestMapping(value = "/test/list.do", method=RequestMethod.GET)

public String selectUserList(@RequestParam(value = "uniqId", required = falsefinal String uniqId, ModelMap modelthrows Exception {


List<?> resultList = testService.selectUser(uniqId); 

model.addAttribute("resultList"resultList);


}




끝.

블로그 이미지

엘로드넷

,

프로시저명 : sp_test



1. DAO


select 로 호출함



    public void callSP() {

    

     select("testDAO.callSP");

    }




2. ibatis xml 


<procedure></procedure> 태그를 사용함



<procedure id="testDAO.callSP" > 

<![CDATA[

{ CALL sp_test }

]]>

</procedure>



끝.


블로그 이미지

엘로드넷

,

1. jave-2.0.jar 파일 다운로드 (첨부파일)


   1.1 maven 이 지원되지 않는 것 같으므로 프로젝트의 Build Path 에서 Add External JARs를 통해 다운받은 jave2.0.jar 파일을 추가해 준다.


0879a19b4459ce425826875d862c5a54_1545880306_6486.png
 



1.2  프로젝트의 속성에서 Deployment Assembly 에도 추가해 준다.


0879a19b4459ce425826875d862c5a54_1545880384_2366.png
 


Java Build Path에 추가했으므로 Java Build Path Entries를 선택하고 다음


0879a19b4459ce425826875d862c5a54_1545880436_849.png
 


jave-2.0.jar 파일이 보일 것이다.


0879a19b4459ce425826875d862c5a54_1545880506_3494.png
 






2. wav파일과 mp3 파일이 저장된 경로 설정 (context-properties.xml)


<entry key="Globals.wavFileStorePath" value="/Users/ellord/Downloads/Neon3Workspace/ict_uae/src/test/" />



3. ffmpeg 파일을 다운받는다.(ffmpeg.org)


  3.1 OSX경우 brew 로 설치하면 편리함.


brew install ffmpeg



  3.2 Windows의 경우 stable 버전을 다운받는다.


다운로드위치 : https://ffmpeg.zeranoe.com/builds/ 





4. 컨트롤러에서 작업(TestController.java)



import it.sauronsoftware.jave.AudioAttributes;

import it.sauronsoftware.jave.Encoder;

import it.sauronsoftware.jave.EncoderException;

import it.sauronsoftware.jave.EncodingAttributes;

import it.sauronsoftware.jave.FFMPEGLocator;





@Controller

public class TestController {



    @Resource(name = "propertiesService")

    protected EgovPropertyService propertyService;



    @RequestMapping(value = "/test/waveomp3.do", method = RequestMethod.GET)

    public String convert(final ModelMap model) throws Exception {

    

  //경로확인

        String storePathString = propertyService.getString("Globals.wavFileStorePath");

        try{

        

        File source = new File(storePathString + "source.wav");//변환전 파일

        File target = new File(storePathString + "target.mp3");//변환후 파일

        

        AudioAttributes audio = new AudioAttributes();

        audio.setCodec("libmp3lame");

        audio.setBitRate(new Integer(128000));

        audio.setChannels(new Integer(2));

        audio.setSamplingRate(new Integer(44100));

        

        EncodingAttributes attrs = new EncodingAttributes();

        attrs.setFormat("mp3");

        attrs.setAudioAttributes(audio);

        

        //Encoder encoder = new Encoder();

        Encoder encoder = new Encoder(new MyFFMPEGExecutableLocator());

        encoder.encode(source, target, attrs);

        

        }catch(EncoderException e) {

         e.printStackTrace();

        

        }


model.addAttribute("mp3location"torePathString + "target.mp3");//변환된 mp3 파일 경로


  return "뷰파일 경로";

    }




    //ffmpeg 경로

    class MyFFMPEGExecutableLocator extends FFMPEGLocator{

        @Override

        protected String getFFMPEGExecutablePath() {

            // TODO Auto-generated method stub

      String path = "/usr/local/bin/ffmpeg";  //OSX, Linux기준

//String path = "C:\ffmpeg-win64-static\bin\ffmpeg.exe";//Windows 기준

            return path;


        }

    }

    

}




5. 해당 폴더에 mp3파일이 생성되는지 확인



0879a19b4459ce425826875d862c5a54_1545880732_4634.png
 



문의 : apps@ellord.net

jave-2.0.jar.zip


블로그 이미지

엘로드넷

,

잘 되던  rsync 가 아래와 같은 에러를 남기로 안될 때.


rsync @ERROR: chroot failed





1. SELinux 확인


9f57a1d448ffbd0a827ef4a2104344d8_1545056212_757.png
 

enabled 로 되어 있다.


이것을  disabled 로 변경하면 되지만 보안상 좋지 않으므로.


selinux 에 rsync 를 허용하는 방향으로 변경하고자 한다.



2. SELInux에서 관리하는 것들은 아래 명령어로 확인가능하다.


9f57a1d448ffbd0a827ef4a2104344d8_1545056534_8227.png
 

많은 것들이 표시되고 대부분 off로 되어 있다.


이중에서 grep키워드를 통해 rsync와 관련된 것들만 확인해 보자.


9f57a1d448ffbd0a827ef4a2104344d8_1545056631_7385.png
 

모두 off로 되어 있다.


이중에서 파일이나 디렉토리를 read only 상태로 접근을 허용하기 위해서는 rsync_export_all_ro 를 on  으로 변경해 줘야 한다.


아래와 같이 입력한다.


9f57a1d448ffbd0a827ef4a2104344d8_1545056833_0302.png
 

다시 getsebool 을 통해 rsync 상태를 확인해 본다.


9f57a1d448ffbd0a827ef4a2104344d8_1545056873_4517.png
 

rsync_export_all_ro 가 on 으로 변경되어 있다.



다시 rsync 명령어를 해보면 잘 될 것이다.



끝.



블로그 이미지

엘로드넷

,

Error : ORA-00911: invalid character

 

 

insert into board (id, title) values (seq.nextval, ?)

 

 

위와 같이 에러나는 것을

아래와 같이 ?에 따옴표를 둘러줌.

 

insert into board (id, title) values (seq.nextval, '?')

블로그 이미지

엘로드넷

,

MySQL 의 REPLACE INTO 와 같은 기능.

세션을 디비에 저장하여 활용할 경우 사용.

 

 

 

1. 테이블 구조

CREATE TABLE  TB_SESS 

(

  SESSION_ID VARCHAR2(50 BYTE) NOT NULL 

, SESSION_EXPIRES DATE 

, SESSION_DATA VARCHAR2(1000 BYTE) 

)  

 

 

 

1. 동일 테이블에서 사용하는 경우

 

MERGE INTO TB_SESS 

                            USING DUAL

                            ON (SESSION_ID = '1234567890')

                            WHEN MATCHED THEN

                                      UPDATE SET

                                            

                                            SESSION_EXPIRES = SYSDATE,

                                            SESSION_DATA = '테스트 데이터'

                                                                                  

                

                            WHEN NOT MATCHED THEN

                                      INSERT (SESSION_ID, SESSION_EXPIRES, SESSION_DATA ) 

 

                                             VALUES ('1234567890', SYSDATE, '테스트 데이터');

 

 

 

TB_SESS 테이블의 SESSION_ID 를 키값으로 하여 

테이블에 값이 있으면 업데이트 하고

없으면 새로 인서트 한다.

 

 

 

 

2. 다른 테이블과 비교하여 사용할 경우

 

 

MERGE INTO TB_SESS A

                            USING 테이블 B

                            ON (A.SESSION_ID = '1234567890')

                            WHEN MATCHED THEN

                                      UPDATE SET

                                            

                                            A.SESSION_EXPIRES = A.SESSION_EXPIRES,

                                            A.SESSION_DATA = B.SESSION_DATA

                                                                                  

                

                            WHEN NOT MATCHED THEN

                                      INSERT (A.SESSION_ID, A.SESSION_EXPIRES, A.SESSION_DATA ) 

 

                                             VALUES (B.SESSION_ID, B.SESSION_EXPIRES, B.SESSION_DATA);


 

 

 

 

끝.

블로그 이미지

엘로드넷

,

아래 명령어로 호스트네임 변경시 /etc/hosts 파일 속의 호스트네임은 변경되지 않는다.

 

$ sudo scutil --set HostName 새호스트명

 

 

 

그래서 오라클 접속시 “ORA-24454: client host name is not set” 에러가 발생하고 접속이 안된다.

 

아래와 같이 해결한다.

 

[변경전 /etc/hosts]

ELLORDNET-MPR:apache ellord$ cat /etc/hosts

##

# Host Database

#

# localhost is used to configure the loopback interface

# when the system is booting.  Do not change this entry.

##

127.0.0.1 localhost

255.255.255.255 broadcasthost

::1 localhost

fe80::1%lo0 localhost

# BEGIN section for OpenVPN Client SSL sites

127.94.0.1 client.openvpn.net

 

# END section for OpenVPN Client SSL sites


 

1. 변경된 호스트네임으로 /etc/hosts 파일에 추가해 쓴다.

아래 ${HOSTNAME} 은 자신의 호스트네임 호출하는 시스템변수이므로 아래 명령어 그대로 입력한다.

스크린샷에서 보듯이 이 호스트의 호스트네임은 ELLORDNET-MPR 이므로 아래 ${HOSTNAME} 은 ELLORDNET-MPR 로 저장이 될 것이다.

 

 

$ sudo /bin/bash -c "echo '127.0.1.1 ${HOSTNAME}' >> /etc/hosts"

 

 

 

2.  또는 /etc/hosts 파일을 직접 편집해도 된다.

 

 

 

[변경후 /etc/hosts]

 

ELLORDNET-MPR:apache ellord$ cat /etc/hosts

##

# Host Database

#

# localhost is used to configure the loopback interface

# when the system is booting.  Do not change this entry.

##

127.0.0.1 localhost

255.255.255.255 broadcasthost

::1 localhost

fe80::1%lo0 localhost

# BEGIN section for OpenVPN Client SSL sites

127.94.0.1 client.openvpn.net

# END section for OpenVPN Client SSL sites

 

127.0.0.1 ELLORDNET-MPR


 

마지막에 

127.0.0.1 ELLORDNET-MPR 

이 추가되어 있다

 

 

 

'ORACLE' 카테고리의 다른 글

Error : ORA-00911: invalid character  (0) 2019.01.08
오라클 MERGE INTO 사용법  (0) 2019.01.08
오라클 create table with comment 기본  (0) 2019.01.08
오라클 테이블 CONSTRAINT  (0) 2019.01.08
오라클 시퀀스  (0) 2019.01.08
블로그 이미지

엘로드넷

,

DROP TABLE TEST;

CREATE TABLE TEST 

(

  IDX NUMBER NOT NULL 

, TITLE VARCHAR2(20) NOT NULL 

, CONTENT VARCHAR2(4000) NOT NULL 

TABLESPACE "TESTSPACE" 

;

 

 

COMMENT ON TABLE TEST IS '테스트테이블';

COMMENT ON COLUMN TEST.IDX IS '일련번호';

COMMENT ON COLUMN TITLE IS '제목';

COMMENT ON COLUMN CONTENT IS '내용';

 

블로그 이미지

엘로드넷

,

--UNIQUE INDEX

CREATE UNIQUE INDEX TEST_PK ON TEST (IDX ASC

TABLESPACE "TESTSPACE"

 

--INDEX

CREATE INDEX TEST_TITLE ON TEST (TITLE ASC

TABLESPACE "TESTSPACE"

 

--PRIMARY KEY

ALTER TABLE "TEST" ADD CONSTRAINT "TEST_PK" PRIMARY KEY ("IDX");

 

--NOT NULL

ALTER TABLE "TEST" ADD CONSTRAINT "SYS_C0036269" CHECK ("IDX" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;

ALTER TABLE "TEST" ADD CONSTRAINT "SYS_C0036270" CHECK ("TITLE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;

 

ALTER TABLE "TEST" ADD CONSTRAINT "SYS_C0036271" CHECK ("CONTENT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;



블로그 이미지

엘로드넷

,

오라클 시퀀스

ORACLE 2019. 1. 8. 21:43

CREATE SEQUENCE TEST_SEQ 

INCREMENT BY 

MAXVALUE 9999999999999999999999999999 

MINVALUE 1 

NOCACHE;



INSERT INTO TEST (IDX, TITLE) VALUES (TEST_SEQ.NEXTVAL, '제목');


블로그 이미지

엘로드넷

,