java - Spring 配置文件配置

标签 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>

最佳答案

我相信您没有正确激活配置文件。使用 springBoot,您可以像这样设置配置文件:

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

或者,通过环境变量:

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

关于java - Spring 配置文件配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38660157/

相关文章:

java - 如何提取正则表达式中的数字,后跟多个条件

java - Keylistener 不适用于 JPanel

java - 多对多三表关系JPA

java - Spring项目无法连接数据库

java - JTextPane - 获取显示行的起始位置

java - Glassfish 和 Spring 设置教程/示例?

java - CertPathBuilderException : unable to find valid certification path was 8. 5 网络部署

使用 Netbeans 的 REST Web 服务的 Java 客户端

java - 使用 Eclipse 部署和测试 rest-webservice

Python 数组分割代码的 Java 代码翻译