小编zac*_*ung的帖子

使用Spring Boot设置Camel和Activemq

我在几个例子中注意到,使用camel配置activemq的常用方法是使用以下bean.我想知道Spring Boot是否已经默认配置了这些bean.我知道如果activemq jar在类路径上,则会创建一个默认的连接工厂,但是下面的内容呢?

<bean id="jmsConnectionFactory"
        class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://localhost:61616"/>
  </bean>

  <bean id="pooledConnectionFactory"
        class="org.apache.activemq.pool.PooledConnectionFactory"
        init-method="start" destroy-method="stop">
    <property name="maxConnections" value="8"/>
    <property name="connectionFactory" ref="jmsConnectionFactory"/>
  </bean>

  <bean id="jmsConfig"
        class="org.apache.camel.component.jms.JmsConfiguration">
    <property name="connectionFactory" ref="pooledConnectionFactory"/>
    <property name="concurrentConsumers" value="10"/>
  </bean>

  <bean id="jms"
        class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="jmsConfig"/>
    <property name="transacted" value="true"/>
    <property name="cacheLevelName" value="CACHE_CONSUMER"/>
  </bean>
Run Code Online (Sandbox Code Playgroud)

要么

@Bean
    public ActiveMQConnectionFactory getConnectionFactory() {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(brokerURL);
        return connectionFactory;
    }

    @Bean(initMethod = "start", destroyMethod = "stop")
    public PooledConnectionFactory getPooledConnectionFactory() {
        PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
        pooledConnectionFactory.setMaxConnections(maxConnections);
        pooledConnectionFactory.setConnectionFactory(getConnectionFactory());
        return pooledConnectionFactory;
    } …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic apache-camel spring-boot

11
推荐指数
1
解决办法
5181
查看次数

为什么Datasources在Tomcat 7上关闭使用Spring Boot取消部署

我有一个有数据源的应用程序.每次我从管理器GUI取消部署应用程序时,数据源都将被关闭.当我尝试重新部署时,数据源保持关闭并抛出以下异常:

{
  "status" : "DOWN",
  "error" : "org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Data source is closed"
}

Caused by: java.sql.SQLException: Data source is closed
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1362) ~[tomcat-dbcp.jar:7.0.53]
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[tomcat-dbcp.jar:7.0.53]
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) ~[hibernate-core-4.3.1.Final.jar:4.3.1.Final]
    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.1.Final.jar:4.3.1.Final]
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.1.Final.jar:4.3.1.Final]
    ... 81 common frames omitted
Run Code Online (Sandbox Code Playgroud)

重新启动服务器可以解决此问题,但这对于生产应用程序来说不是可接受的解决方案.

我有一个不同的应用程序与不同的数据源具有相同的问题.

两个应用程序都使用Spring Boot版本1.1.4和Tomcat 7.其中一个应用程序转换为Spring Boot,并且在转换之前没有数据源问题.

下面是我在Spring Boot Application.java文件中创建数据源的方法.

@Bean()
    public DataSource dataSource() {
        return new JndiDataSourceLookup().getDataSource("com.datasource.CONSUMER");
    }   
Run Code Online (Sandbox Code Playgroud)

我如何阻止这种情况发生?

tomcat7 spring-boot

9
推荐指数
1
解决办法
7369
查看次数

如何使用Spring Boot配置JMX

我用Spring Boot创建了一个Spring Integration应用程序.我想知道如何使用Spring Boot配置JMX.我相信在使用Spring Boot Actuator时默认配置JMX.

我是否需要配置其他任何能够为Spring Integration导出MBean的东西?

我看到的大多数示例在applicationContext.xml中都有以下行

<context:mbean-export/>
<context:mbean-server/>
Run Code Online (Sandbox Code Playgroud)

我的Application.java类看起来像这样.

package com.jbhunt.app.consumerappointmentintegration;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.ImportResource;

    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    @ImportResource("classpath:META-INF/spring/integration/spring-integration-context.xml")
    public class Application {

        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
Run Code Online (Sandbox Code Playgroud)

将此行添加到配置似乎不会导出Spring Integration mbeans

@EnableIntegrationMBeanExport(server = "mbeanServer",  defaultDomain="my.company.domain")
Run Code Online (Sandbox Code Playgroud)

我正在引用此视频https://www.youtube.com/watch?v=TetfR7ULnA8

jmx spring-integration spring-boot

8
推荐指数
2
解决办法
3万
查看次数

什么是JMSType用于?

什么是JMSType用于?它可以用于定义消息有效负载吗?例如,有效负载可能用于添加产品,JMSType可能是AddProduct.

jms

8
推荐指数
1
解决办法
4885
查看次数

如何通过id而不是位置设置微调器选择

我创建了一个简单的Spinner将它绑定到a SimpleCursorAdapter.我正在SimpleCursorAdapter填写内容提供商的城镇列表.

当我去保存用户选择时,我打算保存正在填充的行ID SimpleCursorAdapter.

我正在使用以下代码来获取ID.

townSpinner.getSelectedItemId();
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚当我拉回保存的项目时如何最好地设置选择.

以下代码有效但只按位置编号设置选择.

townSpinner.setSelection(2);
Run Code Online (Sandbox Code Playgroud)

我应该创建一个循环来根据Id确定正确的位置值吗?

long cityId = Long.parseLong(cursor.getString(CityQuery.CITY_ID));

for (int i = 0; i < citySpinner.getCount(); i++) {              
    long itemIdAtPosition2 = citySpinner.getItemIdAtPosition(i);
    if (itemIdAtPosition2 == cityId) {
        citySpinner.setSelection(i);
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

android

7
推荐指数
1
解决办法
7296
查看次数

无法POST一个集合

我有一个简单的实体,映射了一个集合.

@Entity
public class Appointment Identifiable<Integer>   {  

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

    @Column(name="TRAK_NBR")
    private String trackNumber;

    @OneToMany(fetch =FetchType.EAGER, cascade= CascadeType.ALL)
    @JoinColumn(name="CNSM_APT_VER_WRK_I", nullable = false)
    private Set<Product> products = new HashSet<Product>();
}

@Entity
public class Product implements Identifiable<Integer> {

    @Id
    @Column(name = "CNSM_PRD_VER_WRK_I")
    @GeneratedValue(strategy = GenerationType.AUTO)
    @JsonIgnore
    private Integer id;

    @Column(name = "PRD_MDL_NBR")
    private String model;

    @Column(name = "PRD_SPEC_DSC")
    private String description;
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我只包含一个PagingAndSortingRepository for Appointment.我可以使用以下有效负载调用POST命令.

{
  "trackNumber" : "XYZ123",
  "products": [
    {"model" : "MODEL",
     "description" : "NAME" …
Run Code Online (Sandbox Code Playgroud)

spring-data-rest

6
推荐指数
1
解决办法
1332
查看次数

Spring集成Java DSL:创建jms消息驱动程序通道适配器

我遇到以下消息驱动程序通道适配器的问题

@Bean
    public IntegrationFlow jmsInboundFlow() {
        return IntegrationFlows.from(Jms.messageDriverChannelAdapter(this.jmsConnectionFactory)
                .outputChannel(MessageChannels.queue("inbound").get())
                .destination("test"))   
                .get();
    }

    @Bean
    public IntegrationFlow channelFlow() {
        return IntegrationFlows.from("inbound")
                .transform("hello "::concat)
                .handle(System.out::println)
                .get();
    }
Run Code Online (Sandbox Code Playgroud)

我收到一个关于"Dispatcher没有订阅者频道"的错误.将消息有效负载发送到另一个集成流的首选配置是什么?

spring-integration

4
推荐指数
1
解决办法
1102
查看次数

Spring Batch有两个不同的数据源问题

我有一个简单的Spring Batch应用程序,它从数据库中提取记录,只是将行打印到屏幕上.只是一个简单的POC应用程序.

该应用程序适用于Spring Boot 1.2.1.RELEASE,但当我更新到1.2.3.RELEASE时,我收到一条错误消息"没有定义类型为[javax.sql.DataSource]的限定bean"

我不确定这是Spring Boot问题还是Spring Batch问题.

有没有办法为Spring Batch存储库显式定义数据源?

完整堆栈跟踪.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.util.Collection org.springframework.batch.core.configuration.annotation.AbstractBatchConfiguration.dataSources; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [demo/BatchConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceInitializer': Invocation of init method failed; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] is …
Run Code Online (Sandbox Code Playgroud)

java spring-batch spring-boot

4
推荐指数
1
解决办法
6981
查看次数

如何将Spring Integration XML转换为Java DSL for errorChannel

我在我的应用程序中有以下xml配置,我想将其转换为Java DSL.

所以在这个引用中我明确定义了错误通道的名称.主要是出于某种原因.有了这个参考,我期望发生的是下游进程抛出异常,它应该通过错误通道将有效负载路由回来.Java代码是什么样的?

<int-jms:message-driven-channel-adapter
        id="notification" 
        connection-factory="connectionFactory"
        destination="otificationQueue" 
        channel="notificationChannel"
        error-channel="error"       
         />

<int:chain id="chainError" input-channel="error">
        <int:transformer id="transformerError" ref="errorTransformer" />
        <int-jms:outbound-channel-adapter 
            id="error"
            connection-factory="connectionFactory" 
            destination="errorQueue" />
    </int:chain>         
Run Code Online (Sandbox Code Playgroud)

spring-integration

3
推荐指数
1
解决办法
1080
查看次数