Rob,

I finally started using 6.0.2 version and i am trying to use properties
file with properties defined and initial config with those variables but i
failed to start the broker, any help?

Getting below error:


java.lang.IllegalArgumentException: Cannot resolve some objects: [
GenericUnresolvedConfiguredObject{class=HttpPortImpl, unresolvedObjects=[
NameDependency{AuthenticationProvider,
"${qpid.http_port_authenticationProvider}"
}]}, GenericUnresolvedConfiguredObject{class=AmqpPortImpl,
unresolvedObjects=[NameDependency{AuthenticationProvider,
"${qpid.amqp_port_authenticationProvider}"
}]}, GenericUnresolvedConfiguredObject{class=JmxPortImpl,
unresolvedObjects=[NameDependency{AuthenticationProvider,
"${qpid.jmx_port_authenticationProvider}"
}]}]


cat ../etc/system.properties
qpid.amqp_port=5672
qpid.http_port=10001
qpid.jmx_port=8999
qpid.rmi_port=9099
qpid.amqp_port_authenticationProvider=Anonymous
qpid.http_port_authenticationProvider=Anonymous
qpid.jmx_port_authenticationProvider=Plain


My sample initial config with variables:

  "ports" : [ {
    "name" : "AMQP",
    "type" : "AMQP",
    "authenticationProvider" : "${qpid.amqp_port_authenticationProvider}",
    "port" : "${qpid.amqp_port}",
    "virtualhostaliases" : [ {
      "name" : "defaultAlias",
      "type" : "defaultAlias"
    }, {
      "name" : "hostnameAlias",
      "type" : "hostnameAlias"
    }, {
      "name" : "nameAlias",
      "type" : "nameAlias"
    } ]
  }, {
    "name" : "HTTP",
    "type" : "HTTP",
    "authenticationProvider" : "${qpid.http_port_authenticationProvider}",
    "port" : "${qpid.http_port}",
    "protocols" : [ "HTTP" ]
  }, {
    "name" : "JMX_CONNECTOR",
    "type" : "JMX",
    "authenticationProvider" : "${qpid.jmx_port_authenticationProvider}",
    "port" : "${qpid.jmx_port}"
  }, {
    "name" : "RMI_REGISTRY",
    "type" : "RMI",
    "port" : "${qpid.rmi_port}"
  } ],
  "virtualhostnodes" : [ {
    "name" : "default",
    "type" : "JSON",
    "defaultVirtualHostNode" : "true",
    "virtualHostInitialConfiguration" : "{\"type\" : \"DERBY\"}"
  } ]
}




I am starting broker as below:

./qpid-server -icp ../etc/config.json -props ../etc/system.properties


Can you please help me, all i wanted it use initial config and should be
able to start broker with new or updated properties.

Ram
On Fri, Apr 8, 2016 at 11:48 AM, rammohan ganapavarapu <
rammohanga...@gmail.com> wrote:

> Rob,
>
> I tried passing properties file as argument but it didnt like it. Does it
> support in 0.28v?
>
>
> ./qpid-server -icp ../etc/initial_config.json -prop ../etc/qpidd.properties
>
> System Properties set to -Damqj.logging.level=info
> -DQPID_HOME=/opt/qpid-java-broker -DQPID_WORK=/ebs/
> QPID_OPTS set to -Damqj.read_write_pool_size=32 -DQPID_LOG_APPEND=
> Using QPID_CLASSPATH /opt/qpid-java-broker/lib/*:/o
> pt/qpid-java-broker/lib/plugins/*:/opt/qpid-java-broker/lib/opt/*
> Info: QPID_JAVA_GC not set. Defaulting to JAVA_GC -XX:+UseConcMarkSweepGC
> -XX:+HeapDumpOnOutOfMemoryError
> Info: QPID_JAVA_MEM not set. Defaulting to JAVA_MEM -Xmx1024m
> Exception during startup: java.lang.IllegalArgumentException:
> Configuration property argument is not of the format name=value:
> ../etc/qpidd.properties
> java.lang.IllegalArgumentException: Configuration property argument is
> not of the format name=value: ../etc/qpidd.properties
>     at org.apache.qpid.server.Main.execute(Main.java:226)
>     at org.apache.qpid.server.Main.<init>(Main.java:134)
>     at org.apache.qpid.server.Main.main(Main.java:125)
>
>
> ./qpid-server -icp ../etc/initial_config.json -props
> ../etc/qpidd.properties
>
> System Properties set to -Damqj.logging.level=info
> -DQPID_HOME=/opt/qpid-java-broker -DQPID_WORK=/ebs/
> QPID_OPTS set to -Damqj.read_write_pool_size=32 -DQPID_LOG_APPEND=
> Using QPID_CLASSPATH /opt/qpid-java-broker/lib/*:/o
> pt/qpid-java-broker/lib/plugins/*:/opt/qpid-java-broker/lib/opt/*
> Info: QPID_JAVA_GC not set. Defaulting to JAVA_GC -XX:+UseConcMarkSweepGC
> -XX:+HeapDumpOnOutOfMemoryError
> Info: QPID_JAVA_MEM not set. Defaulting to JAVA_MEM -Xmx1024m
>
>
>
>
> *Error: Unrecognized option: -props*
> How do i change this block from initial configuration to use Anonymous?
>
> {
>   "name": "Broker",
>   "storeVersion": 1,
>   "modelVersion": "1.2",
>   "defaultVirtualHost" : "default",
>   "authenticationproviders" : [ {
>     "name" : "passwordFile",
>     "type" : "PlainPasswordFile",
>     "path" : "${qpid.home_dir}/etc/passwd",
>     "preferencesproviders" : [{
>         "name": "fileSystemPreferences",
>         "type": "FileSystemPreferences",
>         "path" : "${qpid.work_dir}/user.preferences.json"
>     }]
>   } ],
>
> On Fri, Apr 8, 2016 at 10:26 AM, Rob Godfrey <rob.j.godf...@gmail.com>
> wrote:
>
>> Hi Ram,
>>
>> so one approach to this would be to define you authentication providers up
>> from in your config file, so you have an an Anonymous provider named
>> "anonymous" and a password file provider named "passwordFile" or
>> something.  Then in the port sections (AMQP, HTTP, JMX, etc) you can
>> parameterise the value they have for the name of the auth provider they
>> are
>> using.  So your initial JSON config file could contain something like:
>>
>> "ports" : [  {
>>   "name" : "AMQP",
>>   "port" : "${qpid.amqp_port}",
>>   "authenticationProvider" : "${qpid.amqp_port_authenticationProvider}",
>>
>>
>> and then you could override which provider to use at runtime by setting
>> the
>> property qpid.amqp_port_authenticationProvider to anonymous or
>> passwordFile
>> (or the name of any other authentication provider that is defined in your
>> JSON config.
>>
>> The only thing you can't do with properties is to add new entities into
>> the
>> config - that you have to do either by editing the file, or by using the
>> REST api to modify the broker configuration while it is running.
>>
>> Hope this helps,
>> Rob
>>
>> On 8 April 2016 at 18:04, rammohan ganapavarapu <rammohanga...@gmail.com>
>> wrote:
>>
>> > Rob,
>> >
>> > Thanks for detailed explanation, i wanted to restart with the changed
>> > properties if any for example today i have Anonymous SASL and later i
>> may
>> > want to use password file. How do i pass SASL mechanism as -prop?
>> >
>> > Thanks,
>> > Ram
>> >
>> > On Fri, Apr 8, 2016 at 2:10 AM, Rob Godfrey <rob.j.godf...@gmail.com>
>> > wrote:
>> >
>> > > Hi Ram,
>> > >
>> > > The initial config file is only used when there is no broker config -
>> the
>> > > idea is that it is used to populate the broker config on first
>> startup.
>> > > Once there is a broker config file then this is used (since it may
>> have
>> > > been updated by creating or modifying entities through the management
>> > > functions).  The broker ships with a default initial config which is
>> > > contained within its jar files, however we allow people to provide
>> there
>> > > own.  Records in the config file a copied verbatim into the config
>> store
>> > -
>> > > the only difference being that ids are generated for each entity.  The
>> > > interpolation from property names to values is done each time the
>> broker
>> > > reads the config.  If the broker finds there is config in the store
>> path
>> > > then it completely ignores the initial config - it does not examine
>> any
>> > > differences.
>> > >
>> > > Are you looking to start a completely fresh broker each time, or
>> merely
>> > to
>> > > be able to change certain properties (such as port numbers) on each
>> > > restart?  If you do not want to retain any changes to the broker
>> > > configuration made while the broker is actually running, then you
>> could
>> > use
>> > > a "memory" config store rather than a Json one.  If you want to retain
>> > any
>> > > changes made through management, but desire the ability to change
>> certain
>> > > properties (like ports) on each startup, then you don't need to worry
>> > about
>> > > the fact that the initial configuration is only loaded the first time
>> -
>> > you
>> > > just need to pass in the property values you want on startup.
>> > >
>> > > In terms of an example system properties file...  The default
>> > > initial-config.json defines the amqp port to be ${qpid.amqp_port} and
>> the
>> > > http port to run on ${qpid.http_port}, so if I create a properties
>> file
>> > > called rob.properties which contains
>> > >
>> > > qpid.http_port=8888
>> > > qpid.amqp_port=5555
>> > >
>> > > and then run qpid with the argument -props rob.properties then I
>> get...
>> > >
>> > > [Broker] BRK-1002 : Starting : Listening on TCP port 5555
>> > > [Broker] MNG-1001 : Web Management Startup
>> > > [Broker] MNG-1002 : Starting : HTTP : Listening on TCP port 8888
>> > >
>> > >
>> > > So, when you use your initial or stored config you just need to ensure
>> > all
>> > > the variables you use in your config are set in your properties file
>> > (some
>> > > properties have defaults within the code if they are not otherwise
>> set -
>> > > e.g. qpid.amqp_port will default to 5672 if it is not set elsewhere).
>> > >
>> > > Hope this helps,
>> > > Rob
>> > >
>> > > On 8 April 2016 at 00:41, rammohan ganapavarapu <
>> rammohanga...@gmail.com
>> > >
>> > > wrote:
>> > >
>> > > > Rob,
>> > > >
>> > > > Thank you, one more question on -icp and -sp, so what if i have
>> updated
>> > > icp
>> > > > with some property change  and restarted broker with icp (every
>> time i
>> > > > restart broker i am using initial config
>> > > > "/opt/qpid-java-broker/bin/qpid-server -icp
>> > > > /opt/qpid-java-broker/etc/config.json" not sure if its is right
>> way or
>> > > > not), does it automatically update config file in -sp? i my case it
>> did
>> > > not
>> > > > updated the config file in store-path upon restart. What will
>> happened
>> > > if i
>> > > > have differences in initial config file that i use to start broker
>> and
>> > > the
>> > > > config file under store-path?
>> > > >
>> > > > Thanks,
>> > > > Ram
>> > > >
>> > > > On Thu, Apr 7, 2016 at 3:59 PM, Rob Godfrey <
>> rob.j.godf...@gmail.com>
>> > > > wrote:
>> > > >
>> > > > > This looks like a client error to me... the line which says:
>> > > > >
>> > > > >  Client restricted itself to : PLAIN
>> > > > >
>> > > > > Out of interest what happens if you remove the
>> > &sasl_mechs='ANONYMOUS'
>> > > > from
>> > > > > your connection URL?  Without any sort of restriction I'd expect
>> the
>> > > > client
>> > > > > to do the right thing.
>> > > > >
>> > > > > I need to get to sleep now (1am here :-) )... I'll have deeper
>> look
>> > in
>> > > > the
>> > > > > morning.
>> > > > >
>> > > > > -- Rob
>> > > > >
>> > > > > On 7 April 2016 at 23:51, rammohan ganapavarapu <
>> > > rammohanga...@gmail.com
>> > > > >
>> > > > > wrote:
>> > > > >
>> > > > > > Rob,
>> > > > > >
>> > > > > > thanks for the explanation, do you have a sample
>> > > > > --system-properties-file?
>> > > > > > that i can take a look?
>> > > > > >
>> > > > > > Also i just tried 6.0.1 but my client/app is throwing this
>> error, i
>> > > am
>> > > > > not
>> > > > > > a developer, i am ops guy and i dont want to change the existing
>> > code
>> > > > but
>> > > > > > wanted to make java qpid work. This is the error i am getting
>> with
>> > > > > 6.0.1v..
>> > > > > >
>> > > > > > 2016-04-07 22:32:36,726
>> > > > > > QPIDConnectionManager-80478ba7-b31e-483a-823e-f726104ac1db
>> ERROR
>> > > > > > S.QUEUECLIENTSERVICE - ConnectionImpl.openConnection() : Error
>> > > > connecting
>> > > > > > to Connection : 0 Host = qphost01
>> > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> > url=amqp://null:********@qphost011460067563391/?brokerlist='
>> tcp://localhost:5672?connecttimeout='5000'&sasl_mechs='ANONYMOUS''
>> > > > > > error Unknown virtualhost '' username=null
>> > > > > > 2016-04-07 22:32:36,731
>> > > > > > QPIDConnectionManager-80478ba7-b31e-483a-823e-f726104ac1db
>> ERROR
>> > > > > > S.QUEUECLIENTSERVICE - ConnectionImpl.openConnection() : Error
>> > > > connecting
>> > > > > > to Connection : 0 Host = qphost01
>> > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> > url=amqp://null:********@qphost011460067563391/?brokerlist='
>> tcp://localhost:5672?connecttimeout='5000'&sasl_mechs='ANONYMOUS''
>> > > > > > error Client and broker have no SASL mechanisms in common.
>> Broker
>> > > > allows
>> > > > > :
>> > > > > > ANONYMOUS Client has : [EXTERNAL, GSSAPI, CRAM-MD5-HASHED,
>> > CRAM-MD5,
>> > > > > > AMQPLAIN, PLAIN, ANONYMOUS] Client restricted itself to : PLAIN
>> > > > > > username=guest
>> > > > > >
>> > > > > >
>> > > > > > And here is my sasl mechanism.
>> > > > > >
>> > > > > > curl -s 0:10001/service/sasl
>> > > > > > {
>> > > > > >   "user" : "ANONYMOUS",
>> > > > > >   "mechanisms" : [ "ANONYMOUS" ]
>> > > > > >
>> > > > > > Same SASL with 0.28 works fine with my app but 6.0.1 is not
>> > working.
>> > > > > >
>> > > > > >
>> > > > > > Thanks,
>> > > > > > Ram
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > > > On Thu, Apr 7, 2016 at 3:39 PM, Rob Godfrey <
>> > rob.j.godf...@gmail.com
>> > > >
>> > > > > > wrote:
>> > > > > >
>> > > > > > > On 7 April 2016 at 23:16, rammohan ganapavarapu <
>> > > > > rammohanga...@gmail.com
>> > > > > > >
>> > > > > > > wrote:
>> > > > > > >
>> > > > > > > > Rob,
>> > > > > > > >
>> > > > > > > > Does v6.0.1 support Anonymous or no authentication? last
>> time
>> > > when
>> > > > i
>> > > > > > try
>> > > > > > > to
>> > > > > > > > use .32 it was not working with Anonymous.
>> > > > > > > >
>> > > > > > >
>> > > > > > > Yes, Anonymous is supported.  Which AMQP protocol are you
>> using
>> > > > (0-9-1,
>> > > > > > > 0-10, or 1.0)... I would expect that Anonymous should work on
>> > 0.32
>> > > > > > however
>> > > > > > > I think in 0.32 the "no authentication layer at all" option
>> for
>> > > AMQP
>> > > > > 1.0
>> > > > > > > probably didn't work (this is different to an authentication
>> > layer
>> > > > > which
>> > > > > > > allows anonymous).
>> > > > > > >
>> > > > > > >
>> > > > > > > >
>> > > > > > > > Sorry i was not clear in my previous email, i was taking
>> about
>> > > > > > properties
>> > > > > > > > file not broker storage format, the use case is if i wanted
>> to
>> > > > > override
>> > > > > > > > some of these properties and i have my own custom
>> tool/script
>> > > that
>> > > > > > goes
>> > > > > > > > through the properties files and replace with the override i
>> > > > defined,
>> > > > > > so
>> > > > > > > i
>> > > > > > > > want to use the same tool/script for qpid config as well. My
>> > tool
>> > > > > only
>> > > > > > > > support key:value but if we have json array it wont work. So
>> > if i
>> > > > > want
>> > > > > > to
>> > > > > > > > pass overrides as "-prop"  command line arguments what are
>> the
>> > > > > > properties
>> > > > > > > > that java qpid support as command line?
>> > > > > > > >
>> > > > > > > > Below if my config, is it possible to pass all these as
>> command
>> > > > line
>> > > > > > > > arguments?
>> > > > > > > >
>> > > > > > > > {
>> > > > > > > >   "authenticationproviders" : [ {
>> > > > > > > >     "id" : "7050933f-3485-4866-95d2-1f1b258ea3ac",
>> > > > > > > >     "name" : "Anonymous",
>> > > > > > > >     "type" : "Anonymous"
>> > > > > > > >   } ],
>> > > > > > > >   "defaultVirtualHost" : "default",
>> > > > > > > >   "id" : "c433a66c-e6dc-4c48-be01-268295f580bc",
>> > > > > > > >   "modelVersion" : "1.3",
>> > > > > > > >   "name" : "Broker",
>> > > > > > > >   "plugins" : [ {
>> > > > > > > >     "id" : "58889cb7-9b9b-4866-bab2-4cfd63266dbf",
>> > > > > > > >     "name" : "httpManagement",
>> > > > > > > >     "pluginType" : "MANAGEMENT-HTTP"
>> > > > > > > >   }, {
>> > > > > > > >     "id" : "67282f5e-ebab-4341-9ff5-27a58fd2df89",
>> > > > > > > >     "name" : "jmxManagement",
>> > > > > > > >     "pluginType" : "MANAGEMENT-JMX"
>> > > > > > > >   } ],
>> > > > > > > >   "ports" : [ {
>> > > > > > > >     "authenticationProvider" : "Anonymous",
>> > > > > > > >     "id" : "99e13356-080a-4abe-852e-8c452149cdae",
>> > > > > > > >     "name" : "JMX_CONNECTOR",
>> > > > > > > >     "port" : "9099",
>> > > > > > > >     "protocols" : [ "JMX_RMI" ]
>> > > > > > > >   }, {
>> > > > > > > >     "authenticationProvider" : "Anonymous",
>> > > > > > > >     "id" : "12813407-62ae-429f-8bee-75802f3b6553",
>> > > > > > > >     "name" : "RMI_REGISTRY",
>> > > > > > > >     "port" : "8999",
>> > > > > > > >     "protocols" : [ "RMI" ]
>> > > > > > > >   }, {
>> > > > > > > >     "authenticationProvider" : "Anonymous",
>> > > > > > > >     "id" : "3b107675-edd7-40a3-86c2-3113b46157f9",
>> > > > > > > >     "name" : "AMQP",
>> > > > > > > >     "port" : "5672"
>> > > > > > > >   }, {
>> > > > > > > >     "authenticationProvider" : "Anonymous",
>> > > > > > > >     "id" : "6dff5ecf-1a4b-46ad-b93d-f2606b5e4f6e",
>> > > > > > > >     "name" : "HTTP",
>> > > > > > > >     "port" : "10001",
>> > > > > > > >     "protocols" : [ "HTTP" ]
>> > > > > > > >   } ],
>> > > > > > > >   "storeVersion" : 1,
>> > > > > > > >   "virtualhosts" : [ {
>> > > > > > > >     "createdTime" : 1439482250329,
>> > > > > > > >     "id" : "eef20ba0-33d3-4b37-93a7-fe2b34e54503",
>> > > > > > > >     "name" : "default",
>> > > > > > > >     "storePath" : "/ebs//derbystore/default",
>> > > > > > > >     "storeType" : "DERBY",
>> > > > > > > >     "type" : "STANDARD"
>> > > > > > > >   } ]
>> > > > > > > > }
>> > > > > > > >
>> > > > > > > >
>> > > > > > > >
>> > > > > > > In 6.0 you can replace any value in the JSON with a reference
>> to
>> > a
>> > > > > > > property, for example
>> > > > > > >
>> > > > > > > "name" : "${myPortName}",
>> > > > > > >
>> > > > > > > this will then interpolate the value from the property, so if
>> you
>> > > set
>> > > > > the
>> > > > > > > property myPortName to "RobsPort" that will be the value used.
>> > > Type
>> > > > > > > conversions will be performed, so if the required value is an
>> > > integer
>> > > > > it
>> > > > > > > will convert to an integer.  If the value required is a list
>> then
>> > > you
>> > > > > can
>> > > > > > > use a String representation of a list in Json format.
>> > > > > > >
>> > > > > > > You can set the properties individually, or you can pass in a
>> > > > > properties
>> > > > > > > file using -props or --system-properties-file (so if you have
>> a
>> > > > > > properties
>> > > > > > > file already maybe you can just pass this in).
>> > > > > > >
>> > > > > > >
>> > > > > > > > One more question or may be clarification is,
>> > > > > > > >
>> > > > > > > >
>> > > > > > > > *-sp (--store-path) is the path of config file that will
>> > > generated
>> > > > by
>> > > > > > > qpidd
>> > > > > > > > from the initial config right? what is the use of
>> store-path?*
>> > > > > > > >
>> > > > > > > >
>> > > > > > > That is correct.  Some people just like to have config files
>> in a
>> > > > > > > non-default location :-)
>> > > > > > >
>> > > > > > > Hope this helps,
>> > > > > > > Rob
>> > > > > > >
>> > > > > > >
>> > > > > > > > *Thanks,*
>> > > > > > > >
>> > > > > > > > *Ram*
>> > > > > > > >
>> > > > > > > > On Thu, Apr 7, 2016 at 3:02 PM, Rob Godfrey <
>> > > > rob.j.godf...@gmail.com
>> > > > > >
>> > > > > > > > wrote:
>> > > > > > > >
>> > > > > > > > > Firstly, 0.28 is quite old now - I would recommend
>> updating
>> > to
>> > > > > v6.0.1
>> > > > > > > if
>> > > > > > > > > you can.
>> > > > > > > > >
>> > > > > > > > > Secondly I'm not sure I understand your question - are you
>> > > asking
>> > > > > > about
>> > > > > > > > > overriding particular properties, or the storage format
>> for
>> > the
>> > > > > > broker
>> > > > > > > > > configuration - these are two different things.  In terms
>> of
>> > > > > > > properties /
>> > > > > > > > > context overrides this can be specified using a properties
>> > file
>> > > > (at
>> > > > > > > least
>> > > > > > > > > in v6 - I forget exactly how it worked on 0.28).  In
>> terms of
>> > > the
>> > > > > > > > > configuration, JSON is currently the only text based
>> format
>> > > > > > supported.
>> > > > > > > > You
>> > > > > > > > > can use a database for the broker config storage, there
>> are
>> > > built
>> > > > > in
>> > > > > > > > > mechanisms to support Derby, BDB, and generic JDBC config
>> > > stores.
>> > > > > > > > >
>> > > > > > > > > May I ask what advantage you would get by using YAML or
>> > > > properties
>> > > > > > > files
>> > > > > > > > > instead of JSON?
>> > > > > > > > >
>> > > > > > > > > -- Rob
>> > > > > > > > >
>> > > > > > > > > On 7 April 2016 at 22:43, rammohan ganapavarapu <
>> > > > > > > rammohanga...@gmail.com
>> > > > > > > > >
>> > > > > > > > > wrote:
>> > > > > > > > >
>> > > > > > > > > > Hi,
>> > > > > > > > > >
>> > > > > > > > > > Is there any way to start qpid-java-0.28 broker using
>> > > > .properties
>> > > > > > > file
>> > > > > > > > or
>> > > > > > > > > > .xml or .yaml file instead of .json file? or what are
>> the
>> > > other
>> > > > > > ways
>> > > > > > > to
>> > > > > > > > > > pass override properties instead of JSON config file?
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > > Thanks,
>> > > > > > > > > > Ram
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>

Reply via email to