스프링 4.3.6 및 스프링 부트 1.4.4를 사용하는 응용 프로그램을 WebLogic 12c 서버에 WAR로 배포 할 때 JNDI 연결을 통해 Oracle 데이터베이스에 연결할 수 있습니다.스프링 부트 JAR을 원격 Oracle 데이터베이스에 어떻게 연결합니까?
이제 Tomcat 서버가 내장 된 독립 실행 형 JAR로 내보낼 수있는 기존 프로젝트의 수정 된 버전을 만들어야합니다. JAR 내에서 동일한 데이터베이스에 어떻게 연결합니까?
WAR Project
| src
| | main.java
| | | controllers
| | | | BasicController.java
| | | | CrudController.java
| | | Application.java
| | META-INF
| | | resources
| | | | form.html
| JRE System Library [JDK 1.7]
| Referenced Libraries
| lib
| | compile
| | runtime
| resources
| | application.properties
| target
| WEB-INF
| | classes
| | weblogic.xml
| build_war.xml
build_war.xml
이 WAR에 응용 프로그램을 내보내기위한 Ant 빌드 파일입니다
이것은 (클래스 경로 src
로) 현재의 WAR 응용 프로그램에 대한 내 현재 이클립스 디렉토리입니다. form.html
은 정적 웹 페이지입니다.
이 기존 코드 : application.properties
에 한 줄이
@SpringBootApplication
public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
@Controller
public class BasicController {
@RequestMapping("/")
public String goToForm() {
return "form.html";
}
}
@RestController
public class CrudController {
@Autowired
private JdbcTemplate jdbcTemplate;
@PostMapping("/result")
public String sampleQuery(@RequestParam String tableName, @RequestParam String colNameSet,
@RequestParam String valueSet) {
String query = "INSERT INTO " + tableName + " (" + colNameSet + ") VALUES " + valueSet;
try {
jdbcTemplate.update(query);
} catch (Exception e) {
e.printStackTrace();
query = e.toString();
}
return query;
}
}
:
이spring.datasource.jndi-name=database.jndi.name
데이터베이스 URL이 jdbc:oracle:[email protected]:port-number:orcl
입니다.
응용 프로그램은 WAR로 데이터베이스에 연결하고 데이터베이스를 성공적으로 업데이트 할 수 있습니다. 독립형 JAR과 동일한 데이터베이스에 연결하려면 무엇을 변경해야합니까?
Google에서 내 문제와 관련된 모든 언급이나 자습서를 찾을 수 없습니다. 제발 내가 정확히 어떻게 수정해야 하는지를 통해 나를 걸으십시오. 감사!
편집 :
이 응용 프로그램에 대한 자세한 정보를 추가하려면 : 내 Oracle 데이터베이스는 다음과 같은 열이있는 테이블 PEOPLE
을 포함는 :
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
PRIMARY KEY (ID)
form.html
는 다음을 제출 sampleQuery()
에 POST 요청을 제출 양식 입력에서 데이터베이스 조회.
응용 프로그램을 WAR로 배포하고 JNDI를 통해 데이터베이스에 연결할 때 데이터베이스 쿼리가 성공적으로 실행됩니다. 그러나
,시의 대답에 따라 application.properties
을 수정 후 :
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [INSERT INTO PEOPLE (ID,NAME,AGE) VALUES ('2','Momo','21')]; nested exception is java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PEOPLE
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:91)
...
at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PEOPLE
...
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
...
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:408)
... 53 more
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: PEOPLE
at org.hsqldb.error.Error.error(Unknown Source)
...
at org.hsqldb.Session.execute(Unknown Source)
... 58 more
이 무슨 일 : 이클립스에서 자바 응용 프로그램으로 실행할 때
spring.datasource.url=jdbc:oracle:thin:@ip-address:port:orcl
spring.datasource.username=user-name
spring.datasource.password=password
다음과 같은 오류가 발생?
합니다.NoSuchBeanDefinitionException : 'org.springframework.jdbc.core.JdbcTemplate'유형의 유효한 bean이 없습니다. autowire 후보로 간주되는 적어도 하나의 bean이 필요합니다. 의존성 주석 : {@ org.springframework.beans.factory.annotation.Autowired (required = true)}' – thegreatjedi
pom.xml 또는 ant xml을 공유하십시오 – mhshimul