본문 바로가기
java

java 외부 mysql과 연동하기- sms 문자전송

by Gyona 2024. 7. 31.

내가 담당하고 있는 프로젝트에 ip를 사용해서 외부 db로 데이터를 전송하여 문자가 갈수있도록 해달라고 요청받았다.

 

난 mysql에 들어가서 해당 ip에 대한 권한을 열어주는건지 알았는데 그게아니었다!

개발이 필요했던것! 먼저 나는 전자정부프레임워크, java, mvc패턴개발환경이다.

 

src\main\resources\egovframework\spring\com\context-datasource.xml

링크로 들어가서 데이터를를 열어줬다!

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

        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

        <property name="url" value="jdbc:mysql://ip:포트/데이터베이스 명"/>

        <property name="username" value="해당 usrenaem"/>

        <property name="password" value="your_password"/> 

        <property name="maxWait" value="60000"/>

    </bean>

 

위는 내가 vm가상화로 만들었던 서버에 mysql에 유저네임 지정해주고 권한 준다음에 넣어줬다!

권한주는건 쉽다. 

GRANT INSERT ON 데이터베이스명.* TO '유저네임'@'개발컴퓨터 아이피' IDENTIFIED BY 'your_password';

 

명령어를 서버에 입력해주면 된다.

그럼 insert 권한 획득!

 

 

 

2번째

src\main\resources\egovframework\spring\com\context-sqlMap.xml

파일에 들어가서 sms.xml이 있는곳 위치설정해주기

<bean id="sqlMapClient-mysql2" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

        <property name="configLocations">

                       <list>

                               <value>classpath:/egovframework/sqlmap/config/${Globals.DbType}/*.xml</value>

                       </list>

               </property>

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

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

    </bean>

 

src\main\resources\egovframework\spring\com\context-transaction.xml

여기에서 트랜잭션 설정!

<!-- MySQL2 트랜잭션 매니저 -->

    <bean id="txManager-mysql2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

    </bean>

 

<!-- MySQL2 트랜잭션 어드바이스 -->

    <tx:advice id="txAdvice-mysql2" transaction-manager="txManager-mysql2">

        <tx:attributes>    

            <tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>

        </tx:attributes>

    </tx:advice>

 

<!-- MySQL2 트랜잭션 어드바이저 -->

        <aop:advisor advice-ref="txAdvice-mysql2" pointcut-ref="requiredTx" />

 

그후에 controller나 vo, dao를 적절하게 수정하면 끝!

 

 

 

하지만 추가 에러가있었다............................

내가쓰는 프로젝트는 ibatis 이다^^ mybatis로 변경되었지만 프로그램이 오래되서.........ㅎㅎ....예전것을 쓰고있다.

sms.SQL.xml에서 쿼리작성이 잘되어있는데. 데이터 전송까지하는데 db에 쌓이지않았다............

 

그이유는^^ sql.xml 상단에있는 링크문제..ㅋㅋ

<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

 

이것을 아래로 바꿔주니까 해결!

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

 

 

원하는 데이터가 잘 들어온다^^