[ 
https://issues.apache.org/activemq/browse/AMQNET-262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=60853#action_60853
 ] 

Daniel Ellis commented on AMQNET-262:
-------------------------------------

Installing NMS in the GAC is not a necessity, as I can always install the DLLs 
in the application folder.  In this case it would have just been more logical 
to store the common components in the GAC which are shared by multiple 
applications (in this case 6 applications on the same machine).

However, although we don't require NMS to be installed in the GAC, I do think 
it has highlighted a general issue with how the assemblies are loaded, and it 
might be better to load assemblies using the assembly name rather than the file 
names.

If assembly loading is left to the CLR, then assemblies are located dynamically 
by looking in the GAC followed by the application folder.  Details about 
assembly probing are here 
http://msdn.microsoft.com/en-us/library/yx7xezcf%28v=VS.71%29.aspx  It even has 
the ability to perform install-on-demand (MSI feature).  Therefore it makes 
sense to leave this job to the CLR, as it is much more flexible.

So in summary, I would suggest:-
  1. Store a list of known connectors, and reference the assemblies strong-name.
  2. If a connector is not a known type, then lookup the assembly name (strong 
or not), from the connectors config file
  3. Leave assembly loading to the CLR

One downside would be that existing connector config files may break, but this 
could be avoided by removing ".dll" from the end of the assembly string before 
loading.

> NMS cannot be used if installed in the GAC
> ------------------------------------------
>
>                 Key: AMQNET-262
>                 URL: https://issues.apache.org/activemq/browse/AMQNET-262
>             Project: ActiveMQ .Net
>          Issue Type: Improvement
>          Components: NMS
>    Affects Versions: 1.3.0
>         Environment: Windows .NET 2.0
>            Reporter: Daniel Ellis
>            Assignee: Jim Gomes
>            Priority: Minor
>             Fix For: 1.4.0
>
>         Attachments: NMS GAC.patch
>
>          Time Spent: 45 minutes
>  Remaining Estimate: 0 minutes
>
> If you install {{Apache.NMS.dll}} and {{Apache.NMS.ActiveMQ.dll}} in the GAC 
> then NMS is not able to load {{Apache.NMS.ActiveMQ.dll}}.
> {{NMSConnectionFactory.cs}} is storing the pre-defined connection factories 
> in _schemaProviderFactoryMap_, but is storing the DLL file names to locate 
> the assemblies.
> One solution would be to store the _AssemblyQualifiedName_ instead and leave 
> the assembly loading to the system.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to