Unable to Configure Cloudant Data Proxy on MobileFirst container on Bluemix - ibm-cloud

I am trying to configure MF container to use Cloudant. And query clouding from the mobile app through the data proxy.
I followed the instructions in to configure the data proxy on the container:
http://www-01.ibm.com/support/knowledgecenter/?lang=en#!/SSHS8R_7.1.0/com.ibm.worklight.deploy.doc/deploy/t_configure_data_proxy.html
I configured the file /ibm-mfpf-container-7.1.0.0-eval/mfpf-server/usr/env/server.env to have the following value:
publicKeyServerUrl=HTTP_CONTAINER_PUBLIC_IP_PORT/MF_PROJECT_CONTEXT_ROOT
And the file /ibm-mfpf-container-7.1.0.0-eval/mfpf-server/usr/config/dataproxy.xml to have the following value:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed Materials - Property of IBM 5725-I43 (C) Copyright IBM Corp.
2015, 2015. All Rights Reserved. US Government Users Restricted Rights -
Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp. -->
<server description="new server">
<!-- Enable features -->
<featureManager>
<!-- Data proxy features -->
<feature>jaxrs-1.1</feature>
<feature>jndi-1.0</feature>
<feature>usr:OAuthTai-1.0</feature>
<!-- -->
</featureManager>
<!-- OAuth TAI For Data Proxy -->
<!--OAuth TAI For Data Proxy. -->
<usr_OAuthTAI cacheSize="1000" id="myOAuthTAI">
<securityConstraint httpMethods="All" securedURLs="datastore" scope="cloudant"/>
</usr_OAuthTAI>
<!-- -->
<!-- -->
<webApplication contextRoot="datastore" id="imf-data-proxy" location="imf-data-proxy.war" name="imf-data-proxy">
<application-bnd>
<security-role name="TAIUserRole">
<special-subject type="ALL_AUTHENTICATED_USERS" />
</security-role>
</application-bnd>
<classloader delegation="parentLast">
<commonLibrary>
<fileset dir="${wlp.install.dir}/lib" includes="com.ibm.ws.crypto.passwordutil*.jar"/>
</commonLibrary>
</classloader>
</webApplication>
<!-- -->
<!-- Declare the JNDI properties for the MobileFirst Data Proxy.
Note: These jndi properties are not required if a bluemix app is bound to the container when startserver.sh or startservegroup.sh is executed.
Also, uncomment the entry publicKeyServerUrl in server.env and fill in the correct URL.
<jndiEntry jndiName="datastore/CloudantProxyDbAccount" value='"hostname"'/>
<jndiEntry jndiName="datastore/CloudantProtocol" value='"http"'/>
<jndiEntry jndiName="datastore/CloudantPort" value='"80"'/>
<jndiEntry jndiName="datastore/CloudantProxyDbAccountUser" value='"cloudantuser"'/>
<jndiEntry jndiName="datastore/CloudantProxyDbAccountPassword" value='"cloudantpassword"'/>
-->
</server>
Then I ran the scripts prepareserver and start server.
When I open http://CONTAINER_PUBLIC_IP:9080/datastore I get the following response, which seems fine:
{"imfdata":"ok","version":"1.0"}
I ran the bluelist sample on this container and I am not able to get it running. It throws the following exception:
2015-10-08 00:05:34.055 bluelist-objective-c[37850:708865] *** Terminating app due to uncaught exception 'Fatal Exception from Proxy', reason: 'Could not create remote database todosdb. Error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x7fcf72e6efa0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=IP_PF_CONTAINER:9080/datastore/api/v1/apps/default/todosdb, NSErrorFailingURLKey= IP_PF_CONTAINER:9080/datastore/api/v1/apps/default/todosdb, _kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4, NSLocalizedDescription=The request timed out.}}, NSErrorFailingURLStringKey=HTTP_CONTAINER_PUBLIC_IP_PORT/datastore/api/v1/apps/default/todosdb, NSErrorFailingURLKey=http://134.168.13.219:9080/datastore/api/v1/apps/default/todosdb, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}'
This is thrown from the iPhone simultator running this code:
[manager remoteStore:dbname completionHandler:^(CDTStore *store, NSError *error) {...
I have set cloudantProxyURL in the Objective C code to the following:
CONTAINER_PUBLIC_IP:9080/MF_PROJECT_CONTEXT_ROOT
Any idea where the problem is? I wan to troubleshoot without security. Can I make unauthenticated calls to Cloudant through the IMFDataManager API and data proxy? Or user has to be authenticated?
===============
I could enforce authentication by calling an adapter before calling [manager remoteStore], and authentication is successful. I still get an error
when I run the following code to connect to a DB on Cloudant and query from it. [manager remoteStore] is the one that throws the error:
IMFDataManager *manager = [IMFDataManager initializeWithUrl:#"HTTP_HOST_PORT/datastore"];
// Get reference to data manager
//manager = [IMFDataManager sharedInstance];
NSString *dbname = #"orders_db";
// Create remote store
[manager remoteStore:dbname completionHandler:^(CDTStore *store, NSError *error) {
if(error){
// Handle error
NSLog(#"Error: %# %#", error, [error userInfo]);
}else{
CDTStore *remotedatastore = store;
NSLog(#"Successfully created store");
}
}];
I am getting this error:
2015-10-09 02:14:39.029 bluelist-objective-c[2655:52223] Error: Error Domain=NSURLErrorDomain Code=-1012 "(null)" UserInfo={NSErrorFailingURLStringKey=http://134.168.13.219:9080/datastore/api/v1/apps/default/orders_db, NSUnderlyingError=0x7fa270c27270 {Error Domain=kCFErrorDomainCFNetwork Code=-1012 "(null)" UserInfo={_kCFURLErrorAuthFailedResponseKey={url = http://134.168.13.219:9080/datastore/api/v1/apps/default/orders_db}}}, NSErrorFailingURLKey=http://134.168.13.219:9080/datastore/api/v1/apps/default/orders_db} {
NSErrorFailingURLKey = "http://134.168.13.219:9080/datastore/api/v1/apps/default/orders_db";
NSErrorFailingURLStringKey = "http://134.168.13.219:9080/datastore/api/v1/apps/default/orders_db";
NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1012 \"(null)\" UserInfo={_kCFURLErrorAuthFailedResponseKey={url = http://134.168.13.219:9080/datastore/api/v1/apps/default/orders_db}}";
}
=====
Another point, when I login to the container using SSH and display the server.xml in /opt/ibm/wlp/usr/servers/worklight/server.xml I don't find the lines for OAuth TAI added. There are not there at all.

The above exception indicates that the authorization to access the data proxy component is not successful.
Can you modify the dataproxy.xml to provide the right securedUrls parameter. The value for securedURLs should be "/datastore/*" instead of "datastore". The updated snippet is here :
<usr_OAuthTAI cacheSize="1000" id="myOAuthTAI">
<securityConstraint httpMethods="All" securedURLs="/datastore/*" scope="cloudant"/>
</usr_OAuthTAI>
Let me know if the dataproxy works fine using this.

Related

Sitecore 8.1 error: "No session Id managers were found to manage the session Id for the current request"

I'm attempting to get a basic layout up and running in Sitecore 8.1, and I've hit an error about which I can find very little information. When attempting to view any page (even the backend interface or connecting from Sitecore Rocks), I get the message "No session Id managers were found to manage the session Id for the current request."
Some Googling suggests that this has to do with some issues with the out-of-box session provider and recommends swapping it out for keeping the sessions in Mongo. Sitecore's documentation provides a description of this, both for shared and private sessions. I've attempted to implement those but continue to receive the same error.
Here's my code as it stands now:
App_Config/Include/MongoSessionProvider.config
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<tracking>
<sharedSessionState>
<providers>
<clear/>
<add name="mongo" type="Sitecore.SessionProvider.MongoDB.MongoSessionProvider, Sitecore.SessionProvider.MongoDB" connectionString="session" pollingInterval="2" compression="true" sessionType="shared"/>
</providers>
</sharedSessionState>
</tracking>
</sitecore>
</configuration>
App_Config/Include/ConnectionStrings.config (excerpt)
<add name="session" connectionString="mongodb://localhost/sharedsession" />
Web.config (excerpt)
<sessionState mode="Custom" cookieless="false" timeout="20" sessionIDManagerType="Sitecore.FXM.SessionManagement.ConditionalSessionIdManager" customProvider="mongo">
<providers>
<add name="mongo" type="Sitecore.SessionProvider.MongoDB.MongoSessionStateProvider, Sitecore.SessionProvider.MongoDB" sessionType="Standard" connectionStringName="session" pollingInterval="2" compression="true" />
<add name="mssql" type="Sitecore.SessionProvider.Sql.SqlSessionStateProvider, Sitecore.SessionProvider.Sql" sessionType="Standard" connectionStringName="session" pollingInterval="2" compression="true" />
</providers>
</sessionState>
Note that this is on my local development machine. I have Mongo running (and confirmed its connection to Sitecore), and I created both the session and sharedsession databases in it using use session and use sharedsession, which I understand to be the way to create DBs in Mongo.
Am I missing something here? Or does the error simply not mean what I think it means?
The message you are seeing is not supposed to be an error, it is rather a log warning. It is related to retrieving the configuration of the Session ID Manager rather that to the configuration of the session itself.
Why this warning normally appears
In the Sitecore.config under <pipelines> there's the getSessionIdManager pipeline defined.
<getSessionIdManager>
</getSessionIdManager>
In the Sitecore.FXM.config, there is a processor configured for this pipeline:
<getSessionIdManager>
<processor type="Sitecore.FXM.Pipelines.ChooseSessionIdManager.FXMSessionIdManagerProcessor, Sitecore.FXM" />
</getSessionIdManager>
This pipeline allows to dynamically select a Session ID Manager for the request. In the default Sitecore configuration, a non-default Session ID Manager will be used only for requests with explicit sessionId URL parameter, i.e. for FXM requests only.
For all other requests, no Session ID Manager will be explicitly selected, and the default System.Web.SessionState.SessionIDManager will be used; this is reflected in the warning message you're seeing. There is nothing wrong with this situation per se, this is by default and by design.
Seeing the message as an error on every page request
This definitely sounds like a defect to me. This message is supposed to be logged once per application lifetime instead of being thrown as an exception on every page.
You should report this to Sitecore support.
An attempt to fix
I cannot debug your system, so I have to do this blindfolded. I would try to create you own Session ID Manager selector:
public class CustomSessionIdManagerProcessor
{
public void Process(GetSessionIdManagerArgs args)
{
if(args.SessionIdManager == null)
{
args.SessionIdManager = new System.Web.SessionState.SessionIDManager();
}
}
}
Configure it as the last processor in the getSessionIdManager pipeline. This will make sure that there is always an explicitly selected Session ID Manager and should hopefully prevent the error from happening.
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<getSessionIdManager>
<processor type="YourNamespace.CustomSessionIdManagerProcessor, YourAssembly" />
</getSessionIdManager>
</pipelines>
</sitecore>
</configuration>
In case it helps anyone else, we were running into this issue as well after upgrading to Sitecore 8.1 rev. 151003.
In our particular case the issue was with a namespace change in this line in the Web.config:
<sessionState mode="InProc" cookieless="false" timeout="20"
sessionIDManagerType="Sitecore.FXM.SessionManagement.ConditionalSessionIdManager">
That should be the following:
<sessionState mode="InProc" cookieless="false" timeout="20"
sessionIDManagerType="Sitecore.SessionManagement.ConditionalSessionIdManager">
It might have been something we missed in the upgrade guide, but we finall found it after pulling down the a copy of Sitecore 8.1 rev. 151003.zip from the downloads page.

Connecting to secured remote AEM repository

In order to create JCR nodes, We are trying to programmatically connect to a remote AEM instance using the JcrUtils.getRepository(...) method to acquire the handle to the repository instance.
This instance is secured and checks for a cookie in the request to let the user in.
Is there a way to pass the cookie to JcrUtils (or other methods of connecting to an AEM repository)?
Right now, when running the code JcrUtils.getRepository("http://host:port/crx/server"); it just throws the following exception:
javax.jcr.RepositoryException: Unable to access a repository with the following settings:
org.apache.jackrabbit.repository.uri: https://<host>:<port>/crx/server
The following RepositoryFactory classes were consulted:
org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory: declined
org.apache.jackrabbit.jcr2spi.Jcr2spiRepositoryFactory: declined
org.apache.jackrabbit.commons.JndiRepositoryFactory: declined
org.apache.jackrabbit.core.RepositoryFactoryImpl: declined
org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory: failed
because of RemoteRuntimeException: java.rmi.RemoteException: Failed to read the resource at URL https://<host>:<port>/crx/server; nested exception is:
java.io.StreamCorruptedException: invalid stream header: 3C21444F
because of RemoteException: Failed to read the resource at URL https://<host>:<port>/crx/server; nested exception is:
java.io.StreamCorruptedException: invalid stream header: 3C21444F
because of StreamCorruptedException: invalid stream header: 3C21444F
Perhaps the repository you are trying to access is not available at the moment.
at org.apache.jackrabbit.commons.JcrUtils.getRepository(JcrUtils.java:223)
at org.apache.jackrabbit.commons.JcrUtils.getRepository(JcrUtils.java:263)
...
There is no way to pass cookie via JcrUtils.getRepository(...) it accepts URI as a string.
In your logs looks like org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory doesn't exist in application classpath.
Make sure you added to dependencies following libs
jackrabbit-jcr-commons
jackrabbit-jcr2dav
in case you are using Maven:
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr-commons</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr2dav</artifactId>
<version>2.10.1</version>
</dependency>
I am getting similar issue as #user3239244 but only in case of https.
I am trying to access repository from standalone java application
repository = JcrUtils.getRepository(url)
Works for http and fails for https
From logs:
javax.jcr.RepositoryException: Unable to access a repository with the
following settings:
org.apache.jackrabbit.repository.uri: https://localhost:5433/crx/server The following RepositoryFactory
classes were consulted:
org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory: declined
org.apache.jackrabbit.jcr2spi.Jcr2spiRepositoryFactory: declined
org.apache.jackrabbit.commons.JndiRepositoryFactory: declined
org.apache.jackrabbit.core.RepositoryFactoryImpl: declined
org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory: failed
because of RepositoryException: Failed to read the resource at URL https://localhost:5433/crx/server
because of SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target
because of ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target
because of SunCertPathBuilderException: unable to find valid certification path to requested target

dropbox connector, no callback uri, Could not find connector with name 'connector.http.mule.default'

i'm new to Mule and i'm trying to use the dropbox connector with my web application. I'm trying to make a flow to authorize the current user to upload a file, however the flow doesn't even run. All i did was set up an http connector, then placed the dropbox connector and set it up. I used the graphic interface but here is the code:
<?xml version="1.0" encoding="UTF-8"?>
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
<dropbox:config name="Dropbox" appKey="xxxxxxxxxxx" appSecret="xxxxxxxxxxx" doc:name="Dropbox">
<dropbox:oauth-callback-config domain="http://localhost" localPort="8081" path="callback" remotePort="8081"/>
</dropbox:config>
<dropbox:config name="Dropbox1" appKey="xxxxxxxxxxx" appSecret="xxxxxxxxxxx" doc:name="Dropbox">
<dropbox:oauth-callback-config domain="http://localhost" localPort="8081" remotePort="8081" path="callback"/>
</dropbox:config>
<flow name="dropbxFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/callback/" doc:name="HTTP"/>
<dropbox:authorize config-ref="Dropbox" doc:name="Dropbox"/>
</flow>
i keep getting this error when i run :
INFO 2015-05-05 16:09:53,688 [Mule.app.deployer.monitor.1.thread.1] org.mule.lifecycle.AbstractLifecycleManager: Starting model: _muleSystemModel
INFO 2015-05-05 16:09:53,688 [Mule.app.deployer.monitor.1.thread.1] org.mule.construct.FlowConstructLifecycleManager: Starting flow: dropbxFlow
INFO 2015-05-05 16:09:53,688 [Mule.app.deployer.monitor.1.thread.1] org.mule.processor.SedaStageLifecycleManager: Starting service: dropbxFlow.stage1
ERROR 2015-05-05 16:09:53,694 [Mule.app.deployer.monitor.1.thread.1] org.mule.modules.dropbox.process.DefaultHttpCallback: Could not find connector with name 'connector.http.mule.default'
INFO 2015-05-05 16:09:53,694 [Mule.app.deployer.monitor.1.thread.1] org.mule.processor.SedaStageLifecycleManager: Stopping service: dropbxFlow.stage1
ERROR 2015-05-05 16:09:53,890 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.application.DefaultMuleApplication: null
org.mule.api.DefaultMuleException: Could not find connector with name 'connector.http.mule.default'
This only happens when i use the Authorize attribute on the dropbox connector, as it needs a callback uri(which i think it the problem here), the callback http endpoint isn't being set up. Any insight would be greatly appreciated.
These are normal version issues with some of the libraries. I had the same issue while using dropbox connector 3.3.0 so after a lot of R&D I figured out where was actually the problem. I went to pom.xml, there I changed version to 3.3.3 and all was fine and running and no more issue at all.
<dependency>
<groupId>org.mule.modules</groupId>
<artifactId>mule-module-dropbox</artifactId>
<version>3.3.3</version>
</dependency>
And regarding that "no callback uri", you should have same redirect uri in dropbox developer account and in dropbox global element Oauth configuration.
Let's say you have provided "http://localhost:8081/callback" as Redirect URI in Dropbox account so your Oauth configuration should be like as following
Domain : localhost
Local Port : 8081
Remote Port : 8081
Path : callback

OpenJPA PersistenceException in Liberty 8.5.5.3 Profile due to invalid URL

I have just found an annoying mistake I made during the configuration of the DB2 JCC Properties in the "server.xml" of my Liberty Profile v8.5.5.3 which I wanted to share with you since it took me a long time searching the Web for helpful hints.
I configured a DB2 Datasource for JPA access in the "server.xml" using the Liberty Developer Tools in Eclipse Luna (Design tab): The "DB2 JCC Properties" are not sorted very clearly in my opinion. The required DB user name and password are not listed next to each other and made it hard for me to identify the correct properties. I unfortunately entered the DB user name in the field "Client User" instead of in "User" which is located nearly at the end of the list.
The thrown exception was:
<openjpa-2.2.3-SNAPSHOT-r422266:1595313 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: There were errors initializing your configuration: <openjpa-2.2.3-SNAPSHOT-r422266:1595313 fatal user error> org.apache.openjpa.util.UserException: A connection could not be obtained for driver class "null" and URL "null". You may have specified an invalid URL.
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newConnectException(DataSourceFactory.java:255)
at org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:241)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:733)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:94) ... ... at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:795) Caused by: java.sql.SQLNonTransientException: [jcc][t4][10205][11234][4.18.60] Null userid is not supported. ERRORCODE=-4461, SQLSTATE=42815 DSRA0010E: SQL State = 42815, Error Code = -4,461
at com.ibm.db2.jcc.am.kd.a(kd.java:747)}
This exception indicates an incorrect connection URL: "You may have specified an invalid URL." but "A connection could not be obtained for driver class 'null' and URL 'null'" really pointed me in the wrong direction.
I recommend using the Source tab instead of the Design tab in the Liberty profile configuration tools and edit the XML entries manually to avoid wrong configuration values that may lead to confusion, e.g.
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.2</feature>
<feature>jdbc-4.0</feature>
<feature>jpa-2.0</feature>
</featureManager>
<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
<applicationMonitor updateTrigger="mbean"/>
<dataSource id="DB2Connection" jndiName="jdbc/DB2Connection">
<jdbcDriver libraryRef="DB2jdbc4libs"/>
<properties.db2.jcc user="Administrator" databaseName="CUSTDB" password="{xor}password" portNumber="50000" serverName="dbserver.mycompany.com"/>
</dataSource>
<library id="DB2jdbc4libs">
<fileset caseSensitive="true" dir="/opt/db2/V10.5/java" includes="db2jcc_license_cu.jar, db2jcc.jar"/>
</library>
<webApplication id="DynWebJPASample" location="DynWebJPASample.war" name="DynWebJPASample"/>

Could not forward the failed message to error queue

When an exception occurs in the code that's called from the handler, the host tries it for 5 times and then shuts down the service with the following message:
2013-10-17 08:57:12,091 [13] FATAL NServiceBus.Faults.Forwarder.FaultManager [(null)] - Could not forward failed message to error queue.
Autofac.Core.Registration.ComponentNotRegisteredException: The requested service 'NServiceBus.Transports.ISendMessages' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.
2013-10-17 08:57:12,139 [13] FATAL NServiceBus [(null)] - Fault manager failed to process the failed message with id e0fc75b2-4eef-4f90-a450-a25901130c9a
System.InvalidOperationException: Could not forward failed message to error queue. ---> Autofac.Core.Registration.ComponentNotRegisteredException: The requested service 'NServiceBus.Transports.ISendMessages' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.
Here's my config:
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<UnicastBusConfig ForwardReceivedMessagesTo="audit">
<MessageEndpointMappings />
</UnicastBusConfig>
Here's my Bus initialization code:
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, AsA_Publisher, UsingTransport<Msmq>
{
}
NServiceBus.SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure);
NServiceBus.Unicast.Config.ConfigUnicastBus busConfig = Configure.With()
.Log4Net()
.DefaultBuilder()
.MsmqSubscriptionStorage()
.UnicastBus();
Bus = busConfig.CreateBus().Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
I am not quite sure why it is not able to try the SLR after failing 5 times and also forwarding it to the error queue after that.
Any help is appreciated!
Thanks
Prasad
Take a look here: https://github.com/sfarmar/Samples/tree/master/HalloWorldWithPubSub
I'm hoping this can guide you in the right direction