Tuesday, July 3, 2007

CCC-cache init failed on Virtual PC Windows XP

This error is really weird....
I have a Virtual PC with Windows XP SP2 and all the hot fixes applied on it. I installed VPN Client v4.8 from Cisco because I needed to access the SAP server at work from my network home. I have a .NET windows application which access SAP using SAP .NET Connector 1.1. This application runs on this Virtual PC. Then... the horror... there is an error that occurs when I execute this application just the first time after rebooting this virtual pc. If I execute this application a second time, this error won't occur anymore but my application won't be able to connect to SAP.

I tried to re-install the SAP .NET Connector 1.1. Also I removed the VPN client software and tried to remove some windows hotfixes that were installed during that week, but without any success. Here is an screenshot of the error.











Tuesday, January 16, 2007

Visual Studio 2005 hangs up while compiling a Biztalk Project

Oh sorpresa.... al tratar de compilar mi solución (Build Solution) todo mi Visual Studio 2005 se congeló y dejó de responder, y además, el CPU usage subió al 100%. ¿Que fué lo que pasó si el día anterior todo estaba funcionando de maravilla? No sé... pero encontré varias soluciones:

1. Cierra la ventana de Output ya que se puede estar generando muchos outputs y esto puede ocacionar el problema (http://support.microsoft.com/default.aspx?scid=kb;EN-US;913432)

Esta solución arreglo mis problemas, no conseguí ningún hotfix pero cerrando la ventana fué suficiente.
y aparte hice lo siguiente:

1) change Copy Local property of [Schemas] reference in project [Orchestrations]from False to True
2) then change it from True to False
3) Save, Build, that's OK!


Otra manera de intentar arreglarlo es:
1. Export your VS IDE settings (Tools-->Import and Export Settings).
2. Run VS command Prompt. Type "devenv /setup", then press enter.
3. Type "devenv /ResetSettings" and then press enter.
4. Type "devenv" and then press enter. Wait for new settings to be created.
5. Re-Import your environment settings (Tools-->Import and Export Setting)
6. Open any solution and build. Whalla! CPU utilization disappears. =)

Enjoy :D

Tuesday, January 9, 2007

OMFG Visual Studio 2005 SP1 Painfull installation

Yep, bajé el Service Pack 1 para el Visual Studio 2005...
Yep, le dí doble click para instalarlo en mi Virtual Machine (W2k3 con 512mb RAM)...
Yep, me tomó 2 horas.... y tronó debido a que me faltaba espacio en disco...
Yep, tuve que mágicamente liberar 1GB extra de no sé donde para volverlo a ejecutar...
Yep, me tomó otras 2 horas mas instalarlo...

.... te odio Microsoft.... pero que le hacemos....

Si las molestias persisten... consulte este link.

Monday, January 8, 2007

How to create .NET Components / Assemblies with serialization requirements

Me topé con la necesidad de crear un componente que me ayudara a manipular un mensaje XML extraido desde SAP. Este componente recibiría de parametro el XML en string en una propiedad de mi componente y retornaría el un string del XML modificado.

Lo que he entendido hasta ahorita es que TODOS los componentes que uno programe para ser usados dentro de Biztalk deberán tener el atributo Serializable (esto es en VB.NET) al definir la clase:

<Serializable> _
Public Class MyClass


¿Pero que pasa si este componente está dentro de una orquestación transaccional?. Cuando Biztalk ejecuto la orquestación, verificará y enumerará los componentes dentro de ella. Si tu componente no tiene lo necesario para ser Serializado, tendrás un error en tiempo de ejecución, ya que Biztalk le solicitará a tu componente que se Serialize a si mismo cuando llegue el momento.

Para tratar con este requerimiento, encontré varias respuestas en internet:

1. Remueve todo lo que tenga que ver con serialización dentro de tu componente. El componente deberá ser invocado dentro de un Expresion Shape el cual deberá estar dentro de un Atomic Transacction, con esto evitarás que el Biztalk le solicite a tu componente que se serialize. Esta solución es mas útil cuando tienes que invocar componentes de negocio que ya fueron construídos por alguien mas.

2. Puedes implementar lo necesario para que tu componente simule la serialización. Esto no es un truco, sino realmente es como debería de hacerse con cada componente que diseñes para ser usado dentro de tu orquestación. Los pasos a seguir son: Utilizar el atributo Serializable en tu clase, implementar la interfaz ISerializable e implementar un constructor y una función especiales que Biztalk mandará a invocar.
Este es un ejemplo (en VB.NET)

Imports System.Runtime.Serialization
<Serializable> _
Public Class MyClass Implements ISerializable

'Constructors
Public Sub New()

End Sub

'Serialization Constructor
Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
End Sub

'Serialization Function
Public Overridable Sub GetObjectData(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext) Implements ISerializable.GetObjectData
End Sub
End Class


El constructor adicional con los dos parámetros será invocado por Biztalk al principio de la orquestacion como modo de verificación. La clase GetObjectData será invocada cuando se necesite des-serializar el objeto. Dentro de est

Para mas información acerca de este tema:

Serialization
Atomic Scope Abuse