miércoles, 12 de noviembre de 2008

Montar un servidor subversion

Supongamos que tenemos el proyecto "prueba". Lo que vamos ha hacer es crearle un repostorio para el solito. Las fuentes de prueba las tenemos en el directorio "prueba" de nuestro home.

1. Crear un nuevo repostorio, en el servidor (puedes crear tantos como quieras):
mkdir -p /srv/svn/prueba/
svnadmin create /srv/svn/prueba/

Arrancar el servidor en modo demonio:

Fíjate que ademas le doy el "-r", para que no permita salir /srv/svn/, que es donde tengo guardados todos los repostorios. Ademas con esto haces que los clientes, no tengan que escribir el path completo, para el caso seria: svn checkout svn://host.example.com/prueba. Si no utilizas "-r" tendrian que poner que indicar que el repostorio es /srv/svn/prueba; ademas de las consideraciones de seguridad que se deducen.

svnserve -d -r /srv/svn/

Asegurate de tener accesible el puerto 3690 (TCP y UDP).

Ahora hacer una autentificación básica, sobre un fichero de texto plano en /srv/svn/prueba/conf/svnserve.conf pon lo siguiente:

[general]
anon-access = none
auth-access = write
password-db = passwd


Esto seria para: anonimos sin lectura ni escritura; autentificados lectura y escritura.

Lo que ves detras de "password-db", es el nombre de fichero de contraseñas. El path es referente al fichero desde el que lo llamamos por lo tanto en este caso seria /srv/svn/prueba/conf/passwd. Aqui su contenido de ejemplo (con un usuario).

[users]
pepito=5agachatequetela

Con esto ya estaría montado el servidor SubVersion y el repositorio prueba. Esta información ha sido obtenida a partir del Joan Puiggali en la dirección:

http://www.kopernix.com/?q=svnd_como

martes, 11 de noviembre de 2008

Configurar subversion para que trabaje como demonio

El demonio que controla el servicio SubVersion de llama svnserve y para configurarlo se debe agregar estas líneas al archivo /etc/services:

svnserve 3690/tcp # Subversion svnserve
svnserve 3690/udp # Subversion svnserve

Además se debe agregar como servicio dentro del sistema xinet.d.

Para esto se crea el siguiente archivo /etc/xinetd.d/svnserve:

# default: on
# Subversion server
service svn
{
socket_type = stream
protocol = tcp
user = svn
wait = no
disable = no
server = /usr/bin/svnserve
server_args = -i -r /home/svnroot
port = 3690
}

Para iniciar el servicio hay que reiniciar xinetd:

/etc/init.d/xinetd restart

Con esto, deberíamos tener el servidor operando. Hay que colocar atención con las reglas del firewall donde debemos habrir el puerto 3690 para tcp y udp.

Este texto ha sido extraído de:

http://joniux.x-red.com/2008/03/31/instalando-un-servidor-subversion/


jueves, 4 de septiembre de 2008

runtime descriptor: runtime modeler error: Wrapper class es.ua.itm.jaxws.Run is not found. Have you run APT to generate them?

El siguiente error se crea cuando la librería JAXB 2.1 no se incluye en el proyecto por DELANTE de JAX-WS 2.1.

SEVERE: Exception sending context initialized event to listener instance of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: runtime modeler error: Wrapper class es.ua.itm.jaxws.Run is not found. Have you run APT to generate them?
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:118)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1114)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1212)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:619)

lunes, 1 de septiembre de 2008

[wsimport] Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

El siguiente error me ha aparecido nada más volver de vacaciones, sin razón aparente:

[wsimport] Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
[wsimport] at com.sun.org.apache.xml.internal.resolver.readers.TextCatalogReader.nextToken(TextCatalogReader.java:249)
[wsimport] at com.sun.org.apache.xml.internal.resolver.readers.TR9401CatalogReader.readCatalog(TR9401CatalogReader.java:81)
[wsimport] at com.sun.org.apache.xml.internal.resolver.Catalog.parseCatalog(Catalog.java:680)
[wsimport] at com.sun.xml.ws.util.xml.XmlUtil.createEntityResolver(XmlUtil.java:222)
[wsimport] at com.sun.tools.ws.wscompile.WsimportOptions.parseArguments(WsimportOptions.java:140)
[wsimport] at com.sun.tools.ws.wscompile.Options.parseArguments(Options.java:225)
[wsimport] at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:154)
[wsimport] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[wsimport] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[wsimport] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[wsimport] at java.lang.reflect.Method.invoke(Method.java:597)
[wsimport] at com.sun.tools.ws.Invoker.invoke(Invoker.java:116)
[wsimport] at com.sun.tools.ws.WsImport.main(WsImport.java:52)

BUILD FAILED
/home/jmgomez/Documents/Projects/intime/nbproject/jaxws-build.xml:59: wsimport failed


Lo he solucionado eliminando la referencia al web service que tenía en la aplicación (update.xml) y volviéndola a crear. La razón por la que me ha aparecido este error me parece que es porque modifiqué el build.xml, porque hago la referencia en otro proyecto y éste funciona perfectamente.

jueves, 24 de julio de 2008

Redirigir con tubería la salida de error a la entrada estándar

Hoy me he visto con una necesidad bastante curiosa: he necesitado redirigir la salida de error del svn a la entrada del sed sin mezclar las salidas y que al final las salida de error se quedase en la de error y la de estandar en la de estándar. Lo he conseguido con la siguiente instrucción:

svn "$@" 2> /dev/stdout > /dev/stderr | sed -e '/no version information available/d' 2> /dev/stdout > /dev/stderr


Es muy importante mantener el orden de redirección de las salidas, si no se mezclarán, es decir, primero redirigir la de error y luego la estándard.

martes, 15 de julio de 2008

Tomcat: SEVERE: WSSERVLET11: failed to parse runtime descriptor: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: PermGen space

La solución parece ser añadir la siguiente línea al principio de catalina.sh:

JAVA_OPTS="-XX:MaxPermSize=512m"

domingo, 13 de julio de 2008

awk: fatal: attempt to use array `function (from array)' in a scalar context

Este error se produce en awk o gawk cuando se usa una función que intenta calcular la longitud de un array que obtenemos como parámetro de una función. Parece ser que no se puede saber la longitud de un array si no estás en el mismo bloque de código en el que la declaras. Una solución sencilla es pasar a esta función, a parte del array, la longitud del array.