2016-07-29 4 views
1

私は「ステージ」と呼ばれるプロファイルを持っていますが、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

私はあなたが正しくプロファイルを活性化していないと信じています。

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

あるいは、環境変数を介して:

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

ありがとうございました。問題はありましたか、正しくプロファイルをアクティブ化していませんでした – imoteb

1

私は、問題は、あなたが実際に「ステージ」プロファイルを活性化しないということだと思いますspringBootで、あなたはこのようにプロファイルを設定することができしたがって、コンテキストにはStageDSConfigクラスのすべてのBeanがありません。したがって、スキーマは作成されません。

関連する問題