How to configuring jasper server with ldaps authentication? - authentication

I've been working on authenticating against an active directory server with jasper 6.4.0 for a while now, and have been getting the following error.
2017-10-16 13:39:35,145 WARN JSLdapAuthenticationProvider,http-apr-8080-exec-9:62 - [
LDAP: error code 49 - 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580 ];
nested exception is javax.naming.AuthenticationException:
[LDAP: error code 49 - 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580 ]
From what I've gathered, data 52e indicates invalid credentials. I tried changing my service account password in my configuration to bob to see if I would get the same error (showing that it's an error when binding to the ldaps server rather than the test account I was logging in with), and I did.
Here is the configuration for the service account in jasper.
<bean id="ldapContextSource" class="com.jaspersoft.jasperserver.api.security.externalAuth.ldap.JSLdapContextSource">
<constructor-arg value="ldaps://MyLDAPSServer:636/"/>
<!-- manager user name and password (may not be needed) -->
<property name="userDn" value="dc=mydomain,dc=com,uid=MyServiceAccount"/>
<property name="password" value="SomePasswordWithSpecialCharacters"/>
</bean>
I'm confident that the username and password are correct. I'm able to authenticate against the same ldaps server using the following Python code.
from ldap3 import Server, \
Connection, \
AUTO_BIND_NO_TLS, \
SUBTREE, \
ALL_ATTRIBUTES
def get_ldap_info(u):
with Connection(Server('MyLDAPSServer', port=636, use_ssl=True),
auto_bind=AUTO_BIND_NO_TLS,
read_only=True,
check_names=True,
user='MyServiceAccount', password='SomePasswordWithSpecialCharacters') as c:
c.search(search_base='DC=mydomain,DC=com',
search_filter='(&(samAccountName=' + u + '))',
search_scope=SUBTREE,
attributes=ALL_ATTRIBUTES,
get_operational_attributes=True)
print(c.response_to_json())
print(c.result)
get_ldap_info('test.user')
The one thing I've been able to think of, is maybe jasper doesn't like having special characters in the password?
Here is the remainder of the configuration for the jasper server in case I'm missing something.
<!--
~ Copyright (C) 2005 - 2014 TIBCO Software Inc. All rights reserved.
~ http://www.jaspersoft.com.
~ Licensed under commercial Jaspersoft Subscription License Agreement
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<!-- ############ LDAP authentication ############
- Sample configuration of external authentication via an external LDAP server.
-->
<bean id="proxyAuthenticationProcessingFilter" class="com.jaspersoft.jasperserver.api.security.EncryptionAuthenticationProcessingFilter"
parent="mtAuthenticationProcessingFilter">
<property name="authenticationManager">
<ref local="ldapAuthenticationManager"/>
</property>
<property name="authenticationSuccessHandler" ref="externalAuthSuccessHandler" />
</bean>
<bean id="proxyAuthenticationSoapProcessingFilter"
class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.MTDefaultAuthenticationSoapProcessingFilter">
<property name="authenticationManager" ref="ldapAuthenticationManager"/>
<property name="authenticationSuccessHandler" ref="externalAuthSuccessHandler" />
<property name="filterProcessesUrl" value="/services"/>
</bean>
<bean id="proxyAuthenticationRestProcessingFilter" class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.MTDefaultAuthenticationRestProcessingFilter">
<property name="authenticationManager">
<ref local="ldapAuthenticationManager"/>
</property>
<property name="authenticationSuccessHandler" ref="externalAuthSuccessHandler" />
<property name="filterProcessesUrl" value="/rest/login"/>
</bean>
<bean id="proxyRequestParameterAuthenticationFilter"
class="com.jaspersoft.jasperserver.war.util.ExternalRequestParameterAuthenticationFilter" parent="requestParameterAuthenticationFilter">
<property name="authenticationManager">
<ref local="ldapAuthenticationManager"/>
</property>
<property name="externalDataSynchronizer" ref="externalDataSynchronizer"/>
</bean>
<bean id="externalAuthSuccessHandler"
class="com.jaspersoft.jasperserver.api.security.externalAuth.JrsExternalAuthenticationSuccessHandler" parent="successHandler">
<property name="externalDataSynchronizer">
<ref local="externalDataSynchronizer"/>
</property>
</bean>
<bean id="proxyBasicProcessingFilter"
class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.MTExternalAuthBasicProcessingFilter" parent="mtBasicProcessingFilter">
<property name="authenticationManager" ref="ldapAuthenticationManager"/>
<property name="externalDataSynchronizer" ref="externalDataSynchronizer"/>
</bean>
<bean id="ldapAuthenticationManager" class="com.jaspersoft.jasperserver.api.security.externalAuth.wrappers.spring.JSProviderManager">
<property name="providers">
<list>
<ref local="ldapAuthenticationProvider"/>
<ref bean="${bean.daoAuthenticationProvider}"/>
<!--anonymousAuthenticationProvider only needed if filterInvocationInterceptor.alwaysReauthenticate is set to true
<ref bean="anonymousAuthenticationProvider"/>-->
</list>
</property>
</bean>
<bean id="ldapAuthenticationProvider" class="com.jaspersoft.jasperserver.api.security.externalAuth.wrappers.spring.ldap.JSLdapAuthenticationProvider">
<constructor-arg>
<bean class="com.jaspersoft.jasperserver.api.security.externalAuth.wrappers.spring.ldap.JSBindAuthenticator">
<constructor-arg><ref local="ldapContextSource"/></constructor-arg>
<property name="userSearch" ref="userSearch"/>
</bean>
</constructor-arg>
<constructor-arg>
<bean class="com.jaspersoft.jasperserver.api.security.externalAuth.wrappers.spring.ldap.JSDefaultLdapAuthoritiesPopulator">
<constructor-arg index="0"><ref local="ldapContextSource"/></constructor-arg>
<constructor-arg index="1"><value></value></constructor-arg>
<property name="groupRoleAttribute" value="title"/>
<property name="groupSearchFilter" value="(uid={1})"/>
<property name="searchSubtree" value="true"/>
<!-- Can setup additional external default roles here <property name="defaultRole" value="LDAP"/> -->
</bean>
</constructor-arg>
</bean>
<bean id="userSearch"
class="com.jaspersoft.jasperserver.api.security.externalAuth.wrappers.spring.ldap.JSFilterBasedLdapUserSearch">
<constructor-arg index="0">
<value>cn=Users</value>
</constructor-arg>
<constructor-arg index="1">
<!--<value>(uid={0})</value>-->
<!--<value>(uid=test.user)</value>-->
<value>(sAMAccountName={0})</value>
</constructor-arg>
<constructor-arg index="2">
<ref local="ldapContextSource" />
</constructor-arg>
<property name="searchSubtree">
<value>true</value>
</property>
</bean>
<bean id="ldapContextSource" class="com.jaspersoft.jasperserver.api.security.externalAuth.ldap.JSLdapContextSource">
<constructor-arg value="ldaps://MyLDAPSServer:636/"/>
<!-- manager user name and password (may not be needed) -->
<property name="userDn" value="dc=mydomain,dc=com,uid=MyServiceAccount"/>
<property name="password" value="SomePasswordWithSpecialCharacters"/>
</bean>
<!-- ############ LDAP authentication ############ -->
<!-- ############ JRS Synchronizer ############ -->
<bean id="externalDataSynchronizer"
class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.MTExternalDataSynchronizerImpl">
<property name="externalUserProcessors">
<list>
<ref local="ldapExternalTenantProcessor"/>
<ref local="mtExternalUserSetupProcessor"/>
<!-- Example processor for creating user folder-->
<!--<ref local="externalUserFolderProcessor"/>-->
</list>
</property>
</bean>
<bean id="abstractExternalProcessor" class="com.jaspersoft.jasperserver.api.security.externalAuth.processors.AbstractExternalUserProcessor" abstract="true">
<property name="repositoryService" ref="${bean.repositoryService}"/>
<property name="userAuthorityService" ref="${bean.userAuthorityService}"/>
<property name="tenantService" ref="${bean.tenantService}"/>
<property name="profileAttributeService" ref="profileAttributeService"/>
<property name="objectPermissionService" ref="objectPermissionService"/>
</bean>
<!--
Multi-tenant configuration. For a JRS deployment with multiple
organizations, modify this bean to set up your organizations. For
single-organization deployments, comment this out and uncomment the version
below.
-->
<bean id="ldapExternalTenantProcessor" class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.processors.ldap.LdapExternalTenantProcessor" parent="abstractExternalProcessor">
<property name="ldapContextSource" ref="ldapContextSource"/>
<property name="multiTenancyService"><ref bean="internalMultiTenancyService"/></property>
<property name="excludeRootDn" value="false"/>
<!--only following LDAP attributes will be used in creation of organization hierarchy.
Eg. cn=Smith,ou=Developement,o=Jaspersoft will produce tanant Development as child of
tenant Jaspersoft (if excludeRootDn=false) as child of default tenant organization_1-->
<property name="organizationRDNs">
<list>
<value>dc</value>
<value>c</value>
<value>o</value>
<value>ou</value>
<value>st</value>
</list>
</property>
<property name="rootOrganizationId" value="organization_1"/>
<property name="tenantIdNotSupportedSymbols" value="#{configurationBean.tenantIdNotSupportedSymbols}"/>
<!-- User credentials are setup in js.externalAuth.properties-->
<property name="externalTenantSetupUsers">
<list>
<bean class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.processors.MTAbstractExternalProcessor.ExternalTenantSetupUser">
<property name="username" value="${new.tenant.user.name.1}"/>
<property name="fullName" value="${new.tenant.user.fullname.1}"/>
<property name="password" value="${new.tenant.user.password.1}"/>
<property name="emailAddress" value="${new.tenant.user.email.1}"/>
<property name="roleSet">
<set>
<value>ROLE_ADMINISTRATOR</value>
<value>ROLE_USER</value>
</set>
</property>
</bean>
</list>
</property>
</bean>
<!--
Single tenant configuration. For a JRS deployment with a single
organization, uncomment this bean and configure it to set up your organization.
Comment out the multi-tenant version of ldapExternalTenantProcessor above
-->
<!--<bean id="ldapExternalTenantProcessor" class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.processors.ldap.LdapExternalTenantProcessor" parent="abstractExternalProcessor">
<property name="ldapContextSource" ref="ldapContextSource"/>
<property name="multiTenancyService"><ref bean="internalMultiTenancyService"/></property>
<property name="excludeRootDn" value="true"/>
<property name="defaultOrganization" value="organization_1"/>
</bean>-->
<bean id="mtExternalUserSetupProcessor" class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.processors.MTExternalUserSetupProcessor" parent="abstractExternalProcessor">
<!--Default permitted role characters; others are removed. Change regular expression to allow other chars.
<property name="permittedExternalRoleNameRegex" value="[A-Za-z0-9_]+"/>-->
<property name="userAuthorityService">
<ref bean="${bean.internalUserAuthorityService}"/>
</property>
<property name="defaultInternalRoles">
<list>
<value>ROLE_USER</value>
</list>
</property>
<property name="organizationRoleMap">
<map>
<!-- Example of mapping customer roles to JRS roles -->
<entry>
<key>
<value>ROLE_ADMIN_EXTERNAL_ORGANIZATION</value>
</key>
<!-- JRS role that the <key> external role is mapped to-->
<value>ROLE_ADMINISTRATOR</value>
</entry>
</map>
</property>
</bean>
<!-- EXAMPLE Processor
<bean id="externalUserFolderProcessor"
class="com.jaspersoft.jasperserver.api.security.externalAuth.processors.ExternalUserFolderProcessor"
parent="abstractExternalProcessor">
<property name="repositoryService" ref="${bean.unsecureRepositoryService}"/>
</bean>
-->
<!-- ############ JRS Synchronizer ############ -->
</beans>

For anyone in the future who's struggling with this like I was, the problem was the userDn in my ldapContextSource.
The correct userDn was
<property name="userDn" value="CN=myserviceaccount,OU=my ou,DC=mydomain,DC=com"/>
I found that by running this python script and looking at the output:
from ldap3 import Server, \
Connection, \
AUTO_BIND_NO_TLS, \
SUBTREE, \
ALL_ATTRIBUTES
def get_ldap_info(u):
with Connection(Server('MyLDAPSServer', port=636, use_ssl=True),
auto_bind=AUTO_BIND_NO_TLS,
read_only=True,
check_names=True,
user='MyServiceAccount', password='SomePasswordWithSpecialCharacters') as c:
c.search(search_base='DC=mydomain,DC=com',
search_filter='(&(samAccountName=' + u + '))',
search_scope=SUBTREE,
attributes=ALL_ATTRIBUTES,
get_operational_attributes=True)
print(c.response_to_json())
print(c.result)
get_ldap_info('myserviceaccount')

Related

Ignite Persistence not working in Yarn offline deployment

Am trying to enable Ignite Native Persistence in Ignite Yarn Deployment.
Purpose of this is to have data written to disc when RAM overflows.
But when I try to add large number of records to Ignite Grid, the node is getting disconnected and getting below exception.
Error :class org.apache.ignite.internal.NodeStoppingException: Operation has been cancelled (node is stopping).
javax.cache.CacheException: class org.apache.ignite.internal.NodeStoppingException: Operation has been cancelled (node is stopping).
ERROR com.project$$anonfun$startWritingToGrid$1: org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1287)
ERROR com.project$$anonfun$startWritingToGrid$1: org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:1648)
ERROR com.project$$anonfun$startWritingToGrid$1: org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.putAll(IgniteCacheProxyImpl.java:1071)
ERROR com.project$$anonfun$startWritingToGrid$1: org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.putAll(GatewayProtectedCacheProxy.java:928)
Please find below the details.
Ignite Version : 2.3.0
Cluster details for Yarn Deployment:
IGNITE_NODE_COUNT=10
IGNITE_RUN_CPU_PER_NODE=5
IGNITE_MEMORY_PER_NODE=10096
IGNITE_VERSION=2.3.0
IGNITE_PATH=/tmp/ignite/2.3.0/apache-ignite-fabric-2.3.0-bin.zip
IGNITE_RELEASES_DIR=/tmp/ignite/2.3.0/releases
IGNITE_WORKING_DIR=/tmp/ignite/2.3.0/work
IGNITE_XML_CONFIG=/tmp/ignite/2.3.0/config/ignite-config.xml
IGNITE_USERS_LIBS=/tmp/ignite/2.3.0/libs
IGNITE_LOCAL_WORK_DIR=/local/home/ignite/2.3.0
Ignite Configuration for Yarn deployment:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="false"/>
<property name="dataStorageConfiguration">
<bean
class="org.apache.ignite.configuration.DataStorageConfiguration">
<property name="defaultDataRegionConfiguration">
<bean
class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="persistenceEnabled" value="true"/>
</bean>
</property>
</bean>
</property>
<property name="peerClassLoadingEnabled" value="true"/>
<property name="networkTimeout" value="10000000"/>
<property name="networkSendRetryCount" value="50"/>
<property name="discoverySpi">
<bean
class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean
class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value><hosts>:47500</value>
</list>
</property>
</bean>
</property>
<property name="networkTimeout"
value="10000000"/>
<property name="joinTimeout"
value="10000000"/>
<property name="maxAckTimeout"
value="10000000"/>
<property name="reconnectCount" value="50"/>
<property name="socketTimeout" value="10000000"/>
</bean>
</property>
</bean>
</beans>
Code to Add Data to grid :
var cacheConf: CacheConfiguration[Long, Data] = new
CacheConfiguration[Long, Data]("DataCache")
cacheConf.setCacheMode(CacheMode.PARTITIONED)
cacheConf.setIndexedTypes(classOf[Long], classOf[Data])
val cache = ignite.getOrCreateCache(cacheConf)
var dataMap = getDataMap()
cache.putAll(dataMap)
Code to Count records:
val sql1 = "select * from DataCache"
val count = cache.query(new SqlFieldsQuery(sql1)).getAll.size()

Query Ignite Cache based on Spark RDD elements

Im trying to retrieve the cached value for every element in the JavaPairRDD. Im using the LOCAL cache mode as i want to minimize data shuffling of cached data. The ignite nodes are started in embedded mode within a spark job. The following code works fine if i run it on a single node. However, when i run it on a cluster of 5 machines, i get zero results.
The first attempt i had was using the IgniteRDD sql method:
dataRDD.sql("SELECT v.id,v.sub,v.obj FROM VPRow v JOIN table(id bigint = ?) i ON v.id = i.id",new Object[] {objKeyEntries.toArray()});
where objKeyEntries is a collected set of entries in an RDD. The second attempt was using AffinityRun:
JavaPairRDD<Long, VPRow> objEntries = objKeyEntries.mapPartitionsToPair(new PairFlatMapFunction<Iterator<Tuple2<Long, Boolean>>, Long, VPRow>() {
#Override
public Iterator<Tuple2<Long, VPRow>> call(Iterator<Tuple2<Long, Boolean>> tuple2Iterator) throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("ignite-rdd.xml");
IgniteConfiguration igniteConfiguration = (IgniteConfiguration) ctx.getBean("ignite.cfg");
Ignite ignite = Ignition.getOrStart(igniteConfiguration);
IgniteCache<Long, VPRow> cache = ignite.getOrCreateCache("dataRDD");
ArrayList<Tuple2<Long,VPRow>> lst = new ArrayList<>();
while(tuple2Iterator.hasNext()) {
Tuple2<Long, Boolean> val = tuple2Iterator.next();
ignite.compute().affinityRun("dataRDD", val._1(),()->{
lst.add(new Tuple2<>(val._1(),cache.get(val._1())));
});
}
return lst.iterator();
}
});
The following is the ignite-rdd.xml configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="memoryConfiguration">
<bean class="org.apache.ignite.configuration.MemoryConfiguration">
<property name="systemCacheInitialSize" value="#{100 * 1024 * 1024}"/>
<property name="defaultMemoryPolicyName" value="default_mem_plc"/>
<property name="memoryPolicies">
<list>
<bean class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
<property name="name" value="default_mem_plc"/>
<property name="initialSize" value="#{5 * 1024 * 1024 * 1024}"/>
</bean>
</list>
</property>
</bean>
</property>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<!-- Set a cache name. -->
<property name="name" value="dataRDD"/>
<!-- Set a cache mode. -->
<property name="cacheMode" value="LOCAL"/>
<!-- Index Integer pairs used in the example. -->
<property name="indexedTypes">
<list>
<value>java.lang.Long</value>
<value>edu.code.VPRow</value>
</list>
</property>
<property name="affinity">
<bean class="org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction">
<property name="partitions" value="50"/>
</bean>
</property>
</bean>
</list>
</property>
<!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
<property name="addresses">
<list>
<value>[IP5]</value>
<value>[IP4]</value>
<value>[IP3]</value>
<value>[IP2]</value>
<value>[IP1]</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
Are you sure that you need to use LOCAL cache mode?
Most likely you filled cache only on one node and local caches on other nodes still empty.
affinityRun doesn't work because you have LOCAL cache, not PARTITIONED, so, it's not possible to determine owner node for key with AffinityFunction.

History of test results team city

I'm looking to get a history of test runs from teamcity by calling the rest apis.
So far I found:
http://teamcity.xyz.com/app/rest/builds/65602/statistics
But this will give only stats for one run.
I found below from Teamcity api documentation, but it is not clear where I should enter the multiple build numbers
http://teamcity:8111/httpAuth/app/rest/builds?locator=BUILDS_LOCATOR&fields=build(id,number,status,buildType(id,name,projectName),statistics(property(name,value)))
has anyone tried this before??
You can achieve this through a different avenue by using the buildTypes endpoint because the locator only supports a single id dimension.
e.g.
/httpAuth/app/rest/buildTypes/id:##BUILD_TYPE##/builds?fields=build(id,number,status,buildType(id,name,projectName),statistics(property(name,value)))
This will return data similar to the following
<builds>
<build id="185" number="1.0.0.2" status="SUCCESS">
<buildType id="Website_1BuildApplication" name="1 - Build Application" projectName="Website"/>
<statistics>
<property name="ArtifactsSize" value="4201093"/>
<property name="BuildArtifactsPublishingTime" value="921"/>
<property name="BuildCheckoutTime" value="377"/>
<property name="BuildDuration" value="21791"/>
<property name="BuildDurationNetTime" value="20493"/>
<property name="buildStageDuration:artifactsPublishing" value="952"/>
<property name="buildStageDuration:buildFinishing" value="15"/>
<property name="buildStageDuration:buildStepRUNNER_6" value="19313"/>
<property name="buildStageDuration:firstStepPreparation" value="219"/>
<property name="buildStageDuration:sourcesUpdate" value="496"/>
<property name="BuildTestStatus" value="1"/>
<property name="SuccessRate" value="1"/>
<property name="TimeSpentInQueue" value="6272"/>
</statistics>
</build>
<build id="183" number="1.0.0.1" status="SUCCESS">
<buildType id="Website_1BuildApplication" name="1 - Build Application" projectName="Website"/>
<statistics>
<property name="ArtifactsSize" value="4200811"/>
<property name="BuildArtifactsPublishingTime" value="297"/>
<property name="BuildCheckoutTime" value="19500"/>
<property name="BuildDuration" value="45123"/>
<property name="BuildDurationNetTime" value="25326"/>
<property name="buildStageDuration:artifactsPublishing" value="328"/>
<property name="buildStageDuration:buildFinishing" value="140"/>
<property name="buildStageDuration:buildStepRUNNER_6" value="23603"/>
<property name="buildStageDuration:firstStepPreparation" value="265"/>
<property name="buildStageDuration:sourcesUpdate" value="19516"/>
<property name="BuildTestStatus" value="1"/>
<property name="SuccessRate" value="1"/>
<property name="TimeSpentInQueue" value="234"/>
</statistics>
</build>
</builds>
Hope this helps

What is the proper setup for spring defaultmessagelistener container on glassfish for redelivery after exception?

I'm trying to setup spring's DefaultMessageListenerContainer class to redeliver messages after an exception is thrown or session.rollback() is called. I am also trying to get this running on glassfish 3.1.2 web profile.
When calling session.rollback() in the onMessage() method of my SessionAwareMessageListener, I get an exception with the message saying: MessageDispatcher - [C4024]: The session is not transacted. I don't see this problem with ActiveMQ, but of course that configuration is different because I'm not using it in an application server.
Has anyone here gotten this working? My configuration follows:
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">com.sun.enterprise.naming.SerialInitContextFactory</prop>
<prop key="java.naming.provider.url">${jms.jndicontext.url}</prop>
<prop key="java.naming.factory.state">com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl</prop>
<prop key="java.naming.factory.url.pkgs">com.sun.enterprise.naming</prop>
</props>
</property>
</bean>
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName" value="${jms.connection.factory}" />
</bean>
<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="defaultDestination" ref="jmsServiceQueue"/>
</bean>
<bean id="jmsServiceProducer"
class="net.exchangesolutions.services.messaging.service.jms.JmsMessageServiceProducerImpl">
<property name="serviceTemplate" ref="jmsTemplate"/>
<property name="serviceDestination" ref="jmsServiceQueue"/>
</bean>
<bean id="myMessageListener"
class="com.myorg.jms.MessageDispatcher"/>
<bean id="jmsServiceContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="destination" ref="jmsServiceQueue"/>
<property name="messageListener" ref="myMessageListener"/>
<property name="errorHandler" ref="jmsErrorHandler" />
<property name="receiveTimeout" value="180000"/>
<property name="concurrentConsumers" value="1"/>
<property name="cacheLevelName" value="CACHE_NONE"/>
<property name="pubSubNoLocal" value="true"/>
<property name="sessionTransacted" value="true"/>
<property name="sessionAcknowledgeMode" value="2" />
<property name="transactionManager" ref="jmsTransactionManager"/>
</bean>
<bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
Setting the acknowledge="auto", the message is acknowledged before listener execution, so the message is deleted from queue.
I have also achieved the DLQ scenario in Spring Application by doing the following changes to your code.
First, we set the acknowledge="transacted" (Since we want guaranteed redelivery in case of exception thrown and Trans acknowledgment for successful listener execution)
<jms:listener-container container-type="default" connection-factory="connectionFactory" acknowledge=" transacted">
Next, since we want to throw the JMSException, we are implementing SessionAwareMessageListener.
public class MyMessageQueueListener implements SessionAwareMessageListener {
public void onMessage( Message message , Session session ) throws JMSException {
//DO something
if(success){
//Do nothing – so the transaction acknowledged
} else {
//throw exception - So it redelivers
throw new JMSException("..exception");
}
}
}
I have tested this. This seems working fine.

org.apache.axiom.om.OMException: Part content ID cannot be blank for non root MIME parts

I am trying to build WSO2-4.4.1 through Maven-2.2.1 when i run command mvn clean install >Wso2Log.txt it will run 10-20 hr after that it will give error build faild error.
If any one have some valuable time please help me thanx.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.
Please refer to /home/uddi/mpf/wso2greg-4.1.1-src/dependencies/axis2/1.6.1-wso2v1/modules/saaj/target/surefire-reports for the individual test results.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 869 minutes 47 seconds
[INFO] Finished at: Fri Jun 08 18:03:03 IST 2012
[INFO] Final Memory: 407M/2727M
[INFO] ------------------------------------------------------------------------
My Individual test result is given bellow
<?xml version="1.0" encoding="UTF-8" ?>
<testsuite failures="0" time="7.535" errors="1" skipped="0" tests="7" name="org.apache.axis2.saaj.integration.IntegrationTest">
<properties>
<property name="java.vendor" value="Sun Microsystems Inc."/>
<property name="javax.xml.soap.SOAPFactory" value="org.apache.axis2.saaj.SOAPFactoryImpl"/>
<property name="env.LESSOPEN" value="|/usr/bin/lesspipe.sh %s"/>
<property name="localRepository" value="/home/uddi/.m2/repository"/>
<property name="env.ORACLE_HOME" value="/home/uddi/app/uddi/product/11.2.0/dbhome_1"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="sun.management.compiler" value="HotSpot Tiered Compilers"/>
<property name="os.name" value="Linux"/>
<property name="sun.boot.class.path" value="/home/uddi/mpf/jdk1.6.0_25/jre/lib/resources.jar:/home/uddi/mpf/jdk1.6.0_25/jre/lib/rt.jar:/home/uddi/mpf/jdk1.6.0_25/jre/lib/sunrsasign.jar:/home/uddi/mpf/jdk1.6.0_25/jre/lib/jsse.jar:/home/uddi/mpf/jdk1.6.0_25/jre/lib/jce.jar:/home/uddi/mpf/jdk1.6.0_25/jre/lib/charsets.jar:/home/uddi/mpf/jdk1.6.0_25/jre/lib/modules/jdk.boot.jar:/home/uddi/mpf/jdk1.6.0_25/jre/classes"/>
<property name="env.PWD" value="/home/uddi/mpf/wso2greg-4.1.1-src"/>
<property name="env.ORACLE_SID" value="orcl"/>
<property name="env.LANG" value="en_US.UTF-8"/>
<property name="java.vm.specification.vendor" value="Sun Microsystems Inc."/>
<property name="java.runtime.version" value="1.6.0_25-b06"/>
<property name="env.HISTSIZE" value="1000"/>
<property name="user.name" value="uddi"/>
<property name="env.USER" value="uddi"/>
<property name="env.SHELL" value="/bin/bash"/>
<property name="env.KDEDIR" value="/usr"/>
<property name="env.QTLIB" value="/usr/lib64/qt-3.3/lib"/>
<property name="env.SSH_TTY" value="/dev/pts/4"/>
<property name="env.NLSPATH" value="/usr/dt/lib/nls/msg/%L/%N.cat"/>
<property name="javax.xml.soap.MetaFactory" value="org.apache.axis2.saaj.SAAJMetaFactoryImpl"/>
<property name="env.PATH" value="/home/uddi/mpf/jdk1.6.0_25/bin:.:/home/uddi/mpf/apache-ant-1.8.4/bin:/home/uddi/mpf/apache-maven-2.2.1/bin:/home/uddi/mpf/jdk1.6.0_25/bin:.:/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/uddi/bin"/>
<property name="user.language" value="en"/>
<property name="sun.boot.library.path" value="/home/uddi/mpf/jdk1.6.0_25/jre/lib/i386"/>
<property name="classworlds.conf" value="/home/uddi/mpf/apache-maven-2.2.1/bin/m2.conf"/>
<property name="env.SSH_CONNECTION" value="172.16.16.117 49123 172.16.16.18 22"/>
<property name="java.version" value="1.6.0_25"/>
<property name="env.SSH_CLIENT" value="172.16.16.117 49123 22"/>
<property name="user.timezone" value="Asia/Calcutta"/>
<property name="sun.arch.data.model" value="32"/>
<property name="java.endorsed.dirs" value="/home/uddi/mpf/jdk1.6.0_25/jre/lib/endorsed"/>
<property name="sun.cpu.isalist" value=""/>
<property name="sun.jnu.encoding" value="UTF-8"/>
<property name="file.encoding.pkg" value="sun.io"/>
<property name="env.SHLVL" value="1"/>
<property name="file.separator" value="/"/>
<property name="env.HOSTNAME" value="ssdg3"/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="env.QTDIR" value="/usr/lib64/qt-3.3"/>
<property name="java.class.version" value="50.0"/>
<property name="user.country" value="US"/>
<property name="java.home" value="/home/uddi/mpf/jdk1.6.0_25/jre"/>
<property name="java.vm.info" value="mixed mode"/>
<property name="env.LOGNAME" value="uddi"/>
<property name="os.version" value="2.6.18-194.el5"/>
<property name="env.G_BROKEN_FILENAMES" value="1"/>
<property name="path.separator" value=":"/>
<property name="java.vm.version" value="20.0-b11"/>
<property name="env.QTINC" value="/usr/lib64/qt-3.3/include"/>
<property name="env.JAVA_HOME" value="/home/uddi/mpf/jdk1.6.0_25"/>
<property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/>
<property name="env.TERM" value="xterm"/>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
<property name="user.home" value="/home/uddi"/>
<property name="java.specification.vendor" value="Sun Microsystems Inc."/>
<property name="env.M2_HOME" value="/home/uddi/mpf/apache-maven-2.2.1"/>
<property name="java.library.path" value="/home/uddi/mpf/jdk1.6.0_25/jre/lib/i386/server:/home/uddi/mpf/jdk1.6.0_25/jre/lib/i386:/home/uddi/mpf/jdk1.6.0_25/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib"/>
<property name="java.vendor.url" value="http://java.sun.com/"/>
<property name="java.vm.vendor" value="Sun Microsystems Inc."/>
<property name="maven.home" value="/home/uddi/mpf/apache-maven-2.2.1"/>
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
<property name="sun.java.command" value="org.codehaus.classworlds.Launcher "clean" "install""/>
<property name="java.class.path" value="/home/uddi/mpf/apache-maven-2.2.1/boot/classworlds-1.1.jar"/>
<property name="env.CVS_RSH" value="ssh"/>
<property name="env.XFILESEARCHPATH" value="/usr/dt/app-defaults/%L/Dt"/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="java.vm.specification.version" value="1.0"/>
<property name="sun.os.patch.level" value="unknown"/>
<property name="sun.cpu.endian" value="little"/>
<property name="com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration" value="com.sun.org.apache.xerces.internal.parsers.XIncludeParserConfiguration"/>
<property name="java.awt.headless" value="true"/>
<property name="env.HOME" value="/home/uddi"/>
<property name="env.ANT_HOME" value="/home/uddi/mpf/apache-ant-1.8.4"/>
<property name="surefire.test.class.path" value="/home/uddi/mpf/wso2greg-4.1.1-src/dependencies/axis2/1.6.1-wso2v1/modules/saaj/target/test-classes:/home/uddi/mpf/wso2greg-4.1.1-src/dependencies/axis2/1.6.1-wso2v1/modules/saaj/target/classes:/home/uddi/.m2/repository/org/apache/geronimo/specs/geronimo-saaj_1.3_spec/1.0.1/geronimo-saaj_1.3_spec-1.0.1.jar:/home/uddi/.m2/repository/org/apache/ws/commons/axiom/axiom-dom/1.2.11/axiom-dom-1.2.11.jar:/home/uddi/.m2/repository/org/apache/ws/commons/axiom/axiom-api/1.2.11/axiom-api-1.2.11.jar:/home/uddi/.m2/repository/org/apache/geronimo/specs/geronimo-activation_1.1_spec/1.0.2/geronimo-activation_1.1_spec-1.0.2.jar:/home/uddi/.m2/repository/org/apache/geronimo/specs/geronimo-javamail_1.4_spec/1.6/geronimo-javamail_1.4_spec-1.6.jar:/home/uddi/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/home/uddi/.m2/repository/jaxen/jaxen/1.1.1/jaxen-1.1.1.jar:/home/uddi/.m2/repository/org/apache/geronimo/specs/geronimo-stax-api_1.0_spec/1.0.1/geronimo-stax-api_1.0_spec-1.0.1.jar:/home/uddi/.m2/repository/org/codehaus/woodstox/wstx-asl/3.2.9/wstx-asl-3.2.9.jar:/home/uddi/mpf/wso2greg-4.1.1-src/dependencies/axis2/1.6.1-wso2v1/modules/adb/target/axis2-adb-1.6.1-wso2v1.jar:/home/uddi/mpf/wso2greg-4.1.1-src/dependencies/axis2/1.6.1-wso2v1/modules/kernel/target/axis2-kernel-1.6.1-wso2v1.jar:/home/uddi/.m2/repository/org/apache/ws/commons/axiom/axiom-impl/1.2.11/axiom-impl-1.2.11.jar:/home/uddi/.m2/repository/org/apache/geronimo/specs/geronimo-ws-metadata_2.0_spec/1.1.2/geronimo-ws-metadata_2.0_spec-1.1.2.jar:/home/uddi/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.1/geronimo-jta_1.1_spec-1.1.jar:/home/uddi/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar:/home/uddi/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar:/home/uddi/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/home/uddi/.m2/repository/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar:/home/uddi/.m2/repository/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar:/home/uddi/.m2/repository/org/apache/ws/commons/schema/XmlSchema/1.4.7-wso2v1/XmlSchema-1.4.7-wso2v1.jar:/home/uddi/.m2/repository/org/apache/neethi/neethi/2.0.4/neethi-2.0.4.jar:/home/uddi/.m2/repository/org/apache/woden/woden-api/1.0M9/woden-api-1.0M9.jar:/home/uddi/.m2/repository/org/apache/woden/woden-impl-dom/1.0M9/woden-impl-dom-1.0M9.jar:/home/uddi/.m2/repository/org/apache/woden/woden-impl-commons/1.0M9/woden-impl-commons-1.0M9.jar:/home/uddi/.m2/repository/javax/ws/rs/jsr311-api/1.0/jsr311-api-1.0.jar:/home/uddi/.m2/repository/org/wso2/securevault/org.wso2.securevault/1.0.0/org.wso2.securevault-1.0.0.jar:/home/uddi/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar:/home/uddi/.m2/repository/jline/jline/0.9.94/jline-0.9.94.jar:/home/uddi/.m2/repository/junit/junit/4.4/junit-4.4.jar:/home/uddi/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar:/home/uddi/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/home/uddi/.m2/repository/org/apache/axis2/axis2-transport-http/1.6.1-wso2v1/axis2-transport-http-1.6.1-wso2v1.jar:/home/uddi/.m2/repository/org/apache/httpcomponents/httpcore/4.0/httpcore-4.0.jar:/home/uddi/.m2/repository/org/apache/axis2/axis2-transport-local/1.6.1-wso2v1/axis2-transport-local-1.6.1-wso2v1.jar:/home/uddi/.m2/repository/xmlunit/xmlunit/1.3/xmlunit-1.3.jar:/home/uddi/.m2/repository/jetty/jetty/5.1.10/jetty-5.1.10.jar:/home/uddi/.m2/repository/com/sun/xml/messaging/saaj/saaj-impl/1.3.2/saaj-impl-1.3.2.jar:/home/uddi/.m2/repository/com/sun/xml/parsers/jaxp-ri/1.4.2/jaxp-ri-1.4.2.jar:/home/uddi/.m2/repository/javax/xml/parsers/jaxp-api/1.4.2/jaxp-api-1.4.2.jar:"/>
<property name="java.io.tmpdir" value="/tmp"/>
<property name="env.LD_LIBRARY_PATH" value="/home/uddi/mpf/jdk1.6.0_25/jre/lib/i386/server:/home/uddi/mpf/jdk1.6.0_25/jre/lib/i386:/home/uddi/mpf/jdk1.6.0_25/jre/../lib/i386"/>
<property name="env.LS_COLORS" value="no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:"/>
<property name="java.vendor.url.bug" value="http://java.sun.com/cgi-bin/bugreport.cgi"/>
<property name="env.MAVEN_OPTS" value="-Xms256m -Xmx3072m"/>
<property name="env.KDE_NO_IPV6" value="1"/>
<property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/>
<property name="os.arch" value="i386"/>
<property name="java.ext.dirs" value="/home/uddi/mpf/jdk1.6.0_25/jre/lib/ext:/usr/java/packages/lib/ext"/>
<property name="user.dir" value="/home/uddi/mpf/wso2greg-4.1.1-src/dependencies/axis2/1.6.1-wso2v1/modules/saaj"/>
<property name="line.separator" value="
"/>
<property name="env.INPUTRC" value="/etc/inputrc"/>
<property name="java.vm.name" value="Java HotSpot(TM) Server VM"/>
<property name="basedir" value="/home/uddi/mpf/wso2greg-4.1.1-src/dependencies/axis2/1.6.1-wso2v1/modules/saaj"/>
<property name="javax.xml.soap.MessageFactory" value="org.apache.axis2.saaj.MessageFactoryImpl"/>
<property name="env.M2" value="/home/uddi/mpf/apache-maven-2.2.1/bin"/>
<property name="javax.xml.soap.SOAPConnectionFactory" value="org.apache.axis2.saaj.SOAPConnectionFactoryImpl"/>
<property name="file.encoding" value="UTF-8"/>
<property name="env.MAIL" value="/var/spool/mail/uddi"/>
<property name="java.specification.version" value="1.6"/>
<property name="env.KDE_IS_PRELINKED" value="1"/>
<property name="env.SSH_ASKPASS" value="/usr/libexec/openssh/gnome-ssh-askpass"/>
</properties>
<testcase time="0.236" classname="org.apache.axis2.saaj.integration.IntegrationTest" name="testSendReceiveMessageWithEmptyNSPrefix"/>
<testcase time="0.039" classname="org.apache.axis2.saaj.integration.IntegrationTest" name="testSendReceiveSimpleSOAPMessage"/>
<testcase time="0.072" classname="org.apache.axis2.saaj.integration.IntegrationTest" name="testSendReceiveMessageWithAttachment"/>
<testcase time="0.036" classname="org.apache.axis2.saaj.integration.IntegrationTest" name="testSendReceive_ISO88591_EncodedSOAPMessage"/>
<testcase time="0.024" classname="org.apache.axis2.saaj.integration.IntegrationTest" name="testCallWithSOAPAction"/>
<testcase time="0.023" classname="org.apache.axis2.saaj.integration.IntegrationTest" name="testCallMTOM">
<error message="org.apache.axiom.om.OMException: Part content ID cannot be blank for non root MIME parts" type="javax.xml.soap.SOAPException">javax.xml.soap.SOAPException: org.apache.axiom.om.OMException: Part content ID cannot be blank for non root MIME parts
at org.apache.axis2.saaj.SOAPMessageImpl.<init>(SOAPMessageImpl.java:108)
at org.apache.axis2.saaj.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:132)
at org.apache.axis2.saaj.integration.IntegrationTest.testCallMTOM(IntegrationTest.java:363)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.apache.axis2.saaj.SAAJTestRunner.invokeTestMethod(SAAJTestRunner.java:134)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
Caused by: org.apache.axiom.om.OMException: Part content ID cannot be blank for non root MIME parts
at org.apache.axiom.attachments.Attachments.getNextPartDataHandler(Attachments.java:648)
at org.apache.axiom.attachments.Attachments.getDataHandler(Attachments.java:350)
at org.apache.axiom.attachments.Attachments.<init>(Attachments.java:247)
at org.apache.axiom.attachments.Attachments.<init>(Attachments.java:267)
at org.apache.axis2.saaj.SOAPMessageImpl.<init>(SOAPMessageImpl.java:84)
... 29 more
</error>
</testcase>
<testcase time="2.043" classname="org.apache.axis2.saaj.integration.IntegrationTest" name="testConnectionCleanup"/>
</testsuite>
It seems test failure, try with:
mvn <commands> -Dmaven.test.skip=true
Regards,