{"id":539,"date":"2011-11-26T09:16:19","date_gmt":"2011-11-26T16:16:19","guid":{"rendered":"https:\/\/gonzalo.aro.cl\/blog\/?p=539"},"modified":"2011-11-26T09:21:33","modified_gmt":"2011-11-26T16:21:33","slug":"instalar-jboss-como-servicio-en-solaris","status":"publish","type":"post","link":"https:\/\/gonzalo.aro.cl\/blog\/2011\/11\/26\/instalar-jboss-como-servicio-en-solaris\/","title":{"rendered":"Instalar JBoss como servicio en Solaris"},"content":{"rendered":"<p>Existe en Solaris una forma de configurar un servicio a trav\u00e9s de generar un script y crear un archivo XML para la configuracion del servicio.<\/p>\n<p>Encontre en <a href=\"https:\/\/www.mastertheboss.com\/jboss-application-server\/252-creating-an-smf-service-script-for-jboss-as.html\">este sitio<\/a> una explicaci\u00f3n de los servicios y del comportamiento de los servicios.  En el esta explicado como hacerlo para JBoss 5.x, pero en mi caso tuve que hacer modificaciones para JBoss 4.2.3.GA.<\/p>\n<p>Primero crea un script llamado jboss<\/p>\n<pre class=\"brush: bash\">\r\n#!\/sbin\/sh\r\n\r\n. \/lib\/svc\/share\/smf_include.sh\r\n\r\ngetproparg() {\r\n\tval=`svcprop -p ${1} ${SMF_FMRI}`\r\n\t[ -n \"$val\" ] && echo $val\r\n}\r\n\r\nif [ -z ${SMF_FMRI} ]; then\r\n\techo \"SMF framework variables are not initialized.\"\r\n\texit ${SMF_EXIT_ERR}\r\nfi\r\n\r\nMETHOD=${1}\t# %m\t(start\/stop)\r\nINSTANCE=${2}\t# %i\t(instance name)\r\n\r\n# read other properties...\r\nJBOSS_USER=root\r\nJBOSS_HOME=\/usr\/local\/jboss-4.2.3.GA\r\nJBOSS_HOST=`getproparg instance\/host`\r\nJBOSS_PROFILE=${INSTANCE}\r\nJBOSS_PARTITION=`getproparg instance\/partition`\r\nJBOSS_UDP_ADDRESS=`getproparg instance\/udp_address`\r\nJBOSS_UDP_PORT=`getproparg instance\/udp_port`\r\nJBOSS_PROP=`getproparg instance\/properties`\r\nJBOSS_EXTRA_OPTS=\r\n\r\nif [ -z ${JBOSS_HOME} ]; then\r\n\techo \"jboss\/home property not set\"\r\n\texit ${SMF_EXIT_ERR_CONFIG}\r\nfi\r\n\r\nif [ ! -z ${JBOSS_PARTITION} ]; then\r\n\tJBOSS_EXTRA_OPTS=\"${JBOSS_EXTRA_OPTS} -g ${JBOSS_PARTITION}\"\r\nfi\r\n\r\nif [ ! -z ${JBOSS_UDP_ADDRESS} ]; then\r\n\tJBOSS_EXTRA_OPTS=\"${JBOSS_EXTRA_OPTS} -u ${JBOSS_UDP_ADDRESS}\"\r\nfi\r\n\r\nif [ ! -z ${JBOSS_UDP_PORT} ]; then\r\n\tJBOSS_EXTRA_OPTS=\"${JBOSS_EXTRA_OPTS} -m ${JBOSS_UDP_PORT}\"\r\nfi\r\n\r\nif [ ! -z ${JBOSS_PROP} ]; then\r\n\tJBOSS_EXTRA_OPTS=\"${JBOSS_EXTRA_OPTS} -D${JBOSS_PROP}\"\r\nfi\r\n\r\nif [ ! -d ${JBOSS_HOME}\/server\/${JBOSS_PROFILE} ]; then\r\n\techo \"jboss\/profile ${JBOSS_PROFILE} not found\"\r\n\texit ${SMF_EXIT_ERR_CONFIG}\r\nfi\r\n\r\ncase \"${METHOD}\" in\r\n'start')\r\n\tsu ${JBOSS_USER} -c \"${JBOSS_HOME}\/bin\/run.sh -c ${JBOSS_PROFILE} -b ${JBOSS_HOST}\" ${JBOSS_EXTRA_OPTS} &\r\n\t;;\r\n\r\n'stop')\r\n\tsu ${JBOSS_USER} -c \"${JBOSS_HOME}\/bin\/shutdown.sh -S\"\r\n\t;;\r\n\r\n*)\r\n\techo \"Usage: ${0} {start|stop}\"\r\n\texit 1\r\n\t;;\r\nesac\r\n\r\nexit ${SMF_EXIT_OK}\r\n<\/pre>\n<p>De esto lo m\u00e1s importante es el usuario y la ruta de JBoss, en general, como en casi cualquier sistema operativo es mejor crear un usuario para el servicio, en este caso jboss, aqui esta establecido el root directamente, lo que podr\u00eda ser una falla de seguridad.<\/p>\n<p>Este debe copiarse<\/p>\n<pre class=\"brush: bash\">\r\ncp jboss \/lib\/svc\/method\/\r\nchmod +x \/lib\/svc\/method\/jboss\r\n<\/pre>\n<p>Luego debe crearse un XML para inciar el serivio, el del sitio original, yo lo modifique para JBoss-4.2.3.GA, las diferencias son que en la carpeta server las aplicacione son all, minimal y default, en cambio en JBoss 5.x son m\u00e1s.<\/p>\n<p>El XML ser\u00eda entonces<\/p>\n<pre class=\"brush: xml\">\r\n<?xml version=\"1.0\"?>\r\n<!DOCTYPE service_bundle SYSTEM \"\/usr\/share\/lib\/xml\/dtd\/service_bundle.dtd.1\">\r\n\r\n<service_bundle type='manifest' name='jboss'>\r\n\r\n    <service\r\n        name='application\/jboss'\r\n        type='service'\r\n        version='1'>\r\n\r\n        <!--\r\n           Wait for network interfaces to be initialized.\r\n        -->\r\n        <dependency\r\n            name='network'\r\n            grouping='require_all'\r\n            restart_on='none'\r\n            type='service'>\r\n            <service_fmri value='svc:\/milestone\/network:default' \/>\r\n        <\/dependency>\r\n\r\n        <!--\r\n           Wait for all local filesystems to be mounted.\r\n        -->\r\n        <dependency\r\n            name='filesystem-local'\r\n            grouping='require_all'\r\n            restart_on='none'\r\n            type='service'>\r\n            <service_fmri value='svc:\/system\/filesystem\/local:default' \/>\r\n        <\/dependency>\r\n\r\n\r\n        <exec_method\r\n            type='method'\r\n            name='start'\r\n            exec='\/lib\/svc\/method\/jboss %m %i'\r\n            timeout_seconds='60' \/>\r\n\r\n        <exec_method\r\n            type='method'\r\n            name='stop'\r\n            exec='\/lib\/svc\/method\/jboss %m %i'\r\n            timeout_seconds='60' \/>\r\n\r\n        <!-- rememer to set home dir of jboss user (usermod -d \/opt\/jboss5\/ jboss) -->\r\n        <property_group name=\"jboss\" type=\"application\">\r\n            <propval name=\"home\" type=\"astring\" value=\"\/home\/jboss\" override=\"true\"\/>\r\n            <propval name=\"user\" type=\"astring\" value=\"jboss\" override=\"true\"\/>\r\n        <\/property_group>\r\n\r\n        <!-- set this to productions values:\r\n          # svccfg -s svc:\/application\/jboss:default setprop instance\/host=0.0.0.0\r\n          # svcadm refresh jboss:default\r\n        -->\r\n        <instance name='default' enabled='false'>\r\n            <property_group name='instance' type='application'>\r\n                <propval name='host' type='astring' value='127.0.0.1' \/>\r\n                <propval name=\"partition\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"udp_address\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"udp_port\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"properties\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n            <\/property_group>\r\n        <\/instance>\r\n        <instance name='all' enabled='false'>\r\n            <property_group name='instance' type='application'>\r\n                <propval name='host' type='astring' value='127.0.0.1' \/>\r\n                <propval name=\"partition\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"udp_address\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"udp_port\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"properties\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n            <\/property_group>\r\n        <\/instance>\r\n        <instance name='minimal' enabled='false'>\r\n            <property_group name='instance' type='application'>\r\n                <propval name='host' type='astring' value='127.0.0.1' \/>\r\n                <propval name=\"partition\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"udp_address\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"udp_port\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n                <propval name=\"properties\" type=\"astring\" value=\"\" override=\"true\"\/>\r\n            <\/property_group>\r\n        <\/instance>\r\n\r\n        <stability value='Stable' \/>\r\n\r\n        <template>\r\n            <common_name>\r\n                <loctext xml:lang='C'>JBoss AS<\/loctext>\r\n            <\/common_name>\r\n            <documentation>\r\n                <doc_link name='jboss.org' uri='https:\/\/www.jboss.org\/jbossas\/docs.html' \/>\r\n            <\/documentation>\r\n        <\/template>\r\n\r\n    <\/service>\r\n\r\n<\/service_bundle>\r\n<\/pre>\n<p>Luego de crearlo debes incorporarlo como servicio a trav\u00e9s del siguiente comando<\/p>\n<pre class=\"brush: bash\">\r\nsvccfg import jboss.xml\r\n<\/pre>\n<p>Para aplicar la configuracion de multicast debes cambiar las propiedades a trav\u00e9s del siguiente comando<\/p>\n<pre class=\"brush: bash\">\r\nsvccfg -s svc:\/application\/jboss:default setprop instance\/host=0.0.0.0\r\nsvcadm refresh jboss:default\r\n<\/pre>\n<p>Luego de lo cual puedes aplicar el comando para inciar (y habilitar)<\/p>\n<pre class=\"brush: bash\">\r\nsvcadm restart jboss:default\r\n<\/pre>\n<p>Para reiniciar<\/p>\n<pre class=\"brush: bash\">\r\nsvcadm restart jboss:default\r\n<\/pre>\n<p>O para detener<\/p>\n<pre class=\"brush: bash\">\r\nsvcadm restart jboss:default\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Existe en Solaris una forma de configurar un servicio a trav\u00e9s de generar un script y crear un archivo XML para la configuracion del servicio. Encontre en este sitio una explicaci\u00f3n de los servicios y del comportamiento de los servicios. En el esta explicado como hacerlo para JBoss 5.x, pero en mi caso tuve que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,14,35],"tags":[],"class_list":["post-539","post","type-post","status-publish","format-standard","hentry","category-desarrollo","category-jboss","category-solaris"],"_links":{"self":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts\/539"}],"collection":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/comments?post=539"}],"version-history":[{"count":4,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts\/539\/revisions"}],"predecessor-version":[{"id":541,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts\/539\/revisions\/541"}],"wp:attachment":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/media?parent=539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/categories?post=539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/tags?post=539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}