2017-02-12 2 views
0

Je suis en train de faire une application mvc print en utilisant gradle comme outil de construction et Mysql comme source de données jndi. Je suis capable de l'exécuter en construisant une guerre et en la déployant manuellement. Mais quand je suis en train de l'exécuter en utilisant Gretty je reçois l'exception suivantejavax.naming.NoInitialContextException avec mysql DataSource et gretty

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 

Ceci est mon fichier build.gradle: -

apply plugin: 'java' 
apply plugin: 'war' 
apply plugin: 'eclipse-wtp' 
//apply plugin: 'jetty' //too old, Jetty6, use gretty 
apply plugin: 'org.akhikhl.gretty' 
apply plugin: 'idea' 
apply plugin: 'jacoco' //code coverage 

def springVersion = "4.2.4.RELEASE" 
def jdkVersion = 1.8 
def junitVersion = "4.12" 
def logbackVersion = "1.1.3" 
def jclOverSlf4jVersion = "1.7.14" 
def jstlVersion = "1.2" 
def hamcrestVersion = "1.3" 
def servletApiVersion = "3.1" 
def mysqlVersion = "5.1.31" 

sourceCompatibility = jdkVersion 
targetCompatibility = jdkVersion 

repositories { 
    mavenLocal() 
    mavenCentral() 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.10' 
} 

configurations.all { 
    exclude group: "commons-logging", module: "commons-logging" 
} 

dependencies { 

    compile 'org.slf4j:jcl-over-slf4j:' + jclOverSlf4jVersion 
    compile 'ch.qos.logback:logback-classic:' + logbackVersion 
    compile 'org.springframework:spring-webmvc:' +springVersion 
    compile 'org.springframework:spring-context:' + springVersion 
    compile 'org.springframework:spring-orm:' + springVersion 
    compile 'javax.servlet:jstl:' + jstlVersion 
    compile 'org.springframework:spring-test:' + springVersion 
    compile 'mysql:mysql-connector-java:' + mysqlVersion 
    //exclude the build in hamcrest 
    testCompile('junit:junit:' + junitVersion) { 
     exclude group: 'org.hamcrest' 
    } 
    testCompile 'org.hamcrest:hamcrest-library:' + hamcrestVersion 
    //include in compile only, exclude in the war 
    providedCompile 'javax.servlet:javax.servlet-api:' + servletApiVersion 

} 

//Gretty 
buildscript { 
    repositories { 
    jcenter() 
    } 

    dependencies { 
    classpath 'org.akhikhl.gretty:gretty:1.1.5' 
    } 
} 

gretty { 
    port = 9090 
    contextPath = 'loanSharks' 
    servletContainer = 'tomcat8' 
} 



//For Eclipse IDE only 
eclipse { 

    wtp { 
    component { 

     //define context path, default to project folder name 
     contextPath = 'loanSharks' 

    } 

    } 
} 

jacoco { 
    toolVersion = "0.7.5+" 
    reportsDir = file("$buildDir/reports/jacoco") 
} 

jacocoTestReport { 
    reports { 
     xml.enabled = true 
     html.enabled = true 
    } 
} 

Voici mon entrée JNDI dans web.xml: -

<resource-ref> 
     <res-ref-name>jdbc/devcore</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

Ceci est mon entrée dans le fichier-config printemps: -

<bean id="dataSource" 
    class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiName" value="java:comp/env/jdbc/devcore" /> 
     <property name="lookupOnStartup" value="true"/> 
     <property name="proxyInterface" value="javax.sql.DataSource"/> 
    </bean> 

J'ai aussi mes entrées de base de données dans les fichiers META-INF/context.xml et les fichiers META-INF/jetty-env.xml comme cela a été suggéré dans d'autres publications connexes. Donc, quelqu'un peut-il expliquer pourquoi je suis incapable d'utiliser gretty pour exécuter ma demande.

Répondre

1

Vous devez activer nommer dans la configuration de Gretty:

gretty { 
    enableNaming = true 
}