Spring配置文件配置

时间:2016-07-29 13:28:25

标签: java spring web-services soap spring-boot

我有一个名为“stage”的配置文件,我正在尝试实现一个Web服务,但每当我发出请求时都会收到一些错误,每当我删除配置文件注释它正常工作时,我真的不知道它为什么不工作这里有一些简介:

@SpringBootApplication
public class MyApp{

    public static void main(String[] args) {
         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
          context.getEnvironment().setActiveProfiles("stage");
          context.register(MyApp.class);    
          SpringApplication.run(MyApp.class, args);

    }

}
@Profile("stage")
@Configuration
@PropertySource(value = { "classpath:jdbc.properties" })
public class StageDSConfig {

    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String jdbcURL;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean
    public DataSource dataSource() {

        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(jdbcURL);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        DatabasePopulatorUtils.execute(createDatabasePopulator(), dataSource);
        return dataSource;
    }

    private DatabasePopulator createDatabasePopulator() {
        ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
        databasePopulator.setContinueOnError(true);
        databasePopulator.addScript(new ClassPathResource("schema-mysql.sql"));
        databasePopulator.addScript(new ClassPathResource("data-mysql.sql"));
        return databasePopulator;
    }
}
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {

    @Bean
    public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);

        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean(servlet, "/ws/*");
    }

    @Bean(name = "ws")
    public DefaultWsdl11Definition defaultActionWsdl11Definition(XsdSchema actionSchema) {
        DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
        wsdl11Definition.setPortTypeName("ActionPort");
        wsdl11Definition.setLocationUri("/ws");
        wsdl11Definition.setTargetNamespace("http://www.example.com/ws");
        wsdl11Definition.setSchema(actionSchema);
        return wsdl11Definition;
    }

    @Bean
    public XsdSchema wsSchema() {
        return new SimpleXsdSchema(new ClassPathResource("ws.xsd"));
    }

}

这是错误日志:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring xml:lang="en">PreparedStatementCallback; bad SQL grammar [INSERT INTO logs(ipAddress,actionn,requestBody) values(?,?,?)]; nested exception is java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: LOGS</faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

2 个答案:

答案 0 :(得分:2)

我相信你没有正确激活个人资料。使用springBoot,您可以设置如下配置文件:

new SpringApplicationBuilder(MyApp.class).profiles("stage").run(args);

或者,通过环境变量:

System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "stage");
SpringApplication.run(MyApp.class, args);

答案 1 :(得分:1)

我认为问题在于你实际上没有激活“stage”配置文件,所以上下文缺少StageDSConfig类中的所有bean,因此没有创建模式