2016-08-02 5 views
0

私は単純なWebSocketをセットアップしてデータを保存しようとしています。どうにかしてデータは永続化されません。エラーメッセージが表示されず、オブジェクトがクライアントに正しく返されます。 RESTコントローラとREST要求でオブジェクトを格納しようとすると、動作します。WebSocketを使用したSpringブートストアデータ

dependencies { 
compile 'org.springframework.boot:spring-boot-starter-web' 
compile 'org.springframework.boot:spring-boot-starter-data-jpa' 
compile 'org.springframework.boot:spring-boot-starter-websocket' 
compile 'org.springframework:spring-messaging' 
compile 'com.google.code.gson:gson:1.7.2' 
compile 'org.postgresql:postgresql:9.4-1200-jdbc41' 
compile 'commons-dbcp:commons-dbcp:1.4' 
testCompile('org.springframework.boot:spring-boot-startet-test') 
} 

PersonController

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

    @Override 
    public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableSimpleBroker("/response"); 
     config.setApplicationDestinationPrefixes("/app"); 
    } 

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/websocket") 
       .setAllowedOrigins("*") 
       .withSockJS(); 
    } 
メッセージングSTOMPの設定

@Controller 
public class PersonController { 

    @Autowired 
    PersonRepository personRepository; 

    @MessageMapping("/test") 
    @SendTo("/response/test") 
    public Person test() throws Exception { 
     Person person = new Person(); 
     person.setName("John Doe"); 
     return personRepository.save(person); 
    } 
} 

:ここ

は私のbuild.gradleファイルの依存関係があります

人エンティティ

@Entity 
public class Person { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    private String name; 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public String getName() { 
     return getName; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

ベースのリポジトリ

@NoRepositoryBean 
public interface BaseRepository<T, ID extends Serializable> extends Repository<T, ID> { 

    void delete(T deleted); 

    void delete(ID id); 

    Iterable<T> findAll(); 

    T findOne(ID id); 

    T save(T persisted); 

    Iterable<T> save(Iterable<T> persited); 
} 

人リポジトリ

public interface PersonRepository extends 
     BaseRepository<Person, Serializable> { 
} 
  • problがあります私のコードで?
  • キャッシングに問題はありますか?私は強制的にフラッシュする必要がありますか?
  • SpringBootでサポートされているWebSocketでデータを保存していますか?
  • データを保存する例をご存知ですか?私は、データを保存しないで基本的な例しか見つけられませんでした。
+0

はSpringBootでサポートされているWebSocketを用いてデータを格納していますか?はい、私はプロダクションでwebsocket上のブラウザからバネブートバックエンドにデータが送られ、挿入、更新などのビジネスロジックを実行するアプリケーションがあるので、このような制限はありません –

答えて

0

問題は私の永続性設定にありました。私は、Java実装からapplication.propertiesファイルに設定を変更しました。私はトランザクションマネージャに問題があったと思います。

完全であることを、ここに私の現在のapplication.propertiesファイルされる:

spring.datasource.url = jdbc:postgresql://localhost:5432/test 
spring.datasource.username = test 
spring.datasource.password = test 

spring.datasource.testWhileIdle = true 
spring.datasource.validationQuery = SELECT 1 
spring.jpa.show-sql = true 
spring.jpa.hibernate.ddl-auto = create 

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect 
関連する問題