Payara Server and Amazon SQS

353 views
Skip to first unread message

Jérôme Ky

unread,
Aug 21, 2017, 8:21:03 PM8/21/17
to Payara Forum
Hi there,

I'm trying to use Amazon SQS with Payara new JCA adapters but have some issue.


First issue I have is by having the dependencies declared as "provided" I have a ClassNotFoundException when I'm trying to deploy my project

Caused by: java.lang.ClassNotFoundException: fish.payara.cloud.connectors.amazonsqs.api.AmazonSQSListener

So I removed provided 


<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>fish.payara.cloud.connectors.amazonsqs</groupId>
        <artifactId>amazon-sqs-jca-api</artifactId>
        <version>0.1.0</version>
        <!--<scope>provided</scope>-->
    </dependency>
    <dependency>
        <groupId>fish.payara.cloud.connectors.amazonsqs</groupId>
        <artifactId>amazon-sqs-rar</artifactId>
        <version>0.1.0</version>
        <type>rar</type>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-sqs</artifactId>
        <version>1.11.158</version>
        <!--<scope>provided</scope>-->
    </dependency>
</dependencies>


I can now successfully deployed my application, however I have the following warning message at the beginning

[2017-08-22T10:12:10.086+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730086] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.Connector(reauthenticationSupport=false, displayName=[Amazon SQS Resource Adapter], description=[], authMechanisms=[], vendorName=Payara Services Limited, version=1.0, transactionSupport=NoTransaction, licenseDescription=[], eisType=, securityPermissions=[], licenseRequired=false, largeIcon=[], smallIcon=[], requiredWorkContexts=[]) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.inbound.AmazonSQSResourceAdapter ], reason : Not a rar bundle context ]]

[2017-08-22T10:12:10.087+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730087] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConnectionDefinition(connection=interface fish.payara.cloud.connectors.amazonsqs.api.AmazonSQSConnection, connectionFactory=interface fish.payara.cloud.connectors.amazonsqs.api.AmazonSQSConnectionFactory, connectionFactoryImpl=class fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSConnectionFactoryImpl, connectionImpl=class fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSConnectionImpl) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.088+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730088] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConfigProperty(description=[AWS Secret Key], ignore=false, type=class java.lang.String, defaultValue=, supportsDynamicUpdates=false, confidential=false) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.088+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730088] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConfigProperty(description=[AWS Access Key], ignore=false, type=class java.lang.String, defaultValue=, supportsDynamicUpdates=false, confidential=false) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.089+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730089] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConfigProperty(description=[Region hosting the queue], ignore=false, type=class java.lang.String, defaultValue=, supportsDynamicUpdates=false, confidential=false) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.090+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730090] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.Activation(messageListeners=[interface fish.payara.cloud.connectors.amazonsqs.api.AmazonSQSListener]) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.inbound.AmazonSQSActivationSpec ], reason : Not a rar bundle context ]]

[2017-08-22T10:12:10.101+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730101] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.Connector(reauthenticationSupport=false, displayName=[Amazon SQS Resource Adapter], description=[], authMechanisms=[], vendorName=Payara Services Limited, version=1.0, transactionSupport=NoTransaction, licenseDescription=[], eisType=, securityPermissions=[], licenseRequired=false, largeIcon=[], smallIcon=[], requiredWorkContexts=[]) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.inbound.AmazonSQSResourceAdapter ], reason : Not a rar bundle context ]]

[2017-08-22T10:12:10.102+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730102] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConnectionDefinition(connection=interface fish.payara.cloud.connectors.amazonsqs.api.AmazonSQSConnection, connectionFactory=interface fish.payara.cloud.connectors.amazonsqs.api.AmazonSQSConnectionFactory, connectionFactoryImpl=class fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSConnectionFactoryImpl, connectionImpl=class fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSConnectionImpl) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.102+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730102] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConfigProperty(description=[AWS Secret Key], ignore=false, type=class java.lang.String, defaultValue=, supportsDynamicUpdates=false, confidential=false) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.102+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730102] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConfigProperty(description=[AWS Access Key], ignore=false, type=class java.lang.String, defaultValue=, supportsDynamicUpdates=false, confidential=false) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.103+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730103] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.ConfigProperty(description=[Region hosting the queue], ignore=false, type=class java.lang.String, defaultValue=, supportsDynamicUpdates=false, confidential=false) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.outbound.AmazonSQSManagedConnectionFactory ], reason : not a rar bundle context ]]

[2017-08-22T10:12:10.104+1000] [Payara 4.1] [WARNING] [] [global] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730104] [levelValue: 900] [[
  Failed to handle annotation [ @javax.resource.spi.Activation(messageListeners=[interface fish.payara.cloud.connectors.amazonsqs.api.AmazonSQSListener]) ] on class [ fish.payara.cloud.connectors.amazonsqs.api.inbound.AmazonSQSActivationSpec ], reason : Not a rar bundle context ]]

[2017-08-22T10:12:10.105+1000] [Payara 4.1] [SEVERE] [] [javax.enterprise.system.tools.deployment.dol] [tid: _ThreadID=39 _ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1503360730105] [levelValue: 1000] [[
  Annotations processing failed for file:/Users/jerome/git/sqstest/target/sqs-test-1.0-SNAPSHOT/]]

Please find attached what I'm trying to deploy.

Thanks for your help.
sqstest.zip

Mike Croft

unread,
Aug 22, 2017, 4:22:38 AM8/22/17
to Payara Forum
Did you actually deploy the SQS RAR file? In Matt's blog, his pom.xml has dependencies as provided because he also deploys the RAR file to Payara Micro before his own app:

java -jar payara-micro.jar --deploy amazon-sqs-rar-0.1.0.rar --deploy application-name-version.war

Payara Server works in the same way - you will need to deploy the RAR to Payara Server before your own app. It's interesting that you commended out "provided" for the API, but not for the actual RAR file which contains the implementation. You could try reversing these or, deploy the RAR file separately and leave all scopes as they are in the blog.

Steve Millidge

unread,
Aug 22, 2017, 10:46:42 AM8/22/17
to Payara Forum
You have to deploy the rar file first. Also if you are deploying to Payara Server (not Micro) then you also need to ensure the setting in the administration console under server-config->Connector Service->Connector Classloading Policy is set to global. This means the classes from your rar file will be globally available in the server. 

Steve

Jérôme Ky

unread,
Aug 22, 2017, 8:12:31 PM8/22/17
to Payara Forum
Yes I did deploy the RAR file first.

But it was indeed missing configuration to make classes from the rar file globally available in the server.

Thanks !

Jérôme Ky

unread,
Aug 24, 2017, 12:07:11 AM8/24/17
to Payara Forum
Hi there,

It's all working fine now, just have one more issue.

I can't redeploy my application without first stopping amazon-sqs.rar connector.

I have the following error : Caused by: java.lang.IllegalStateException: Timer already cancelled.

Here the full stacktrace :

  java.lang.Exception
java-app_1    | java.lang.Exception
java-app_1    | at com.sun.enterprise.connectors.inbound.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:215)
java-app_1    | at org.glassfish.ejb.mdb.MessageBeanContainer.<init>(MessageBeanContainer.java:236)
java-app_1    | at org.glassfish.ejb.mdb.MessageBeanContainerFactory.createContainer(MessageBeanContainerFactory.java:63)
java-app_1    | at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:225)
java-app_1    | at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
java-app_1    | at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:100)
java-app_1    | at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:209)
java-app_1    | at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:318)
java-app_1    | at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497)
java-app_1    | at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:220)
java-app_1    | at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:488)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:544)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:540)
java-app_1    | at java.security.AccessController.doPrivileged(Native Method)
java-app_1    | at javax.security.auth.Subject.doAs(Subject.java:360)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:539)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:570)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:562)
java-app_1    | at java.security.AccessController.doPrivileged(Native Method)
java-app_1    | at javax.security.auth.Subject.doAs(Subject.java:360)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:561)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1469)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:111)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1851)
java-app_1    | at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1727)
java-app_1    | at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
java-app_1    | at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
java-app_1    | at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
java-app_1    | at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:480)
java-app_1    | at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
java-app_1    | at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
java-app_1    | at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
java-app_1    | at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
java-app_1    | at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
java-app_1    | at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
java-app_1    | at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231)
java-app_1    | at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
java-app_1    | at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
java-app_1    | at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231)
java-app_1    | at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
java-app_1    | at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
java-app_1    | at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
java-app_1    | at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:539)
java-app_1    | at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
java-app_1    | at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
java-app_1    | at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
java-app_1    | at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
java-app_1    | at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
java-app_1    | at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
java-app_1    | at java.lang.Thread.run(Thread.java:748)
java-app_1    | Caused by: java.lang.IllegalStateException: Timer already cancelled.
java-app_1    | at java.util.Timer.sched(Timer.java:397)
java-app_1    | at java.util.Timer.schedule(Timer.java:248)
java-app_1    | at fish.payara.cloud.connectors.amazonsqs.api.inbound.AmazonSQSResourceAdapter.endpointActivation(AmazonSQSResourceAdapter.java:106)
java-app_1    | at com.sun.enterprise.connectors.inbound.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:207)
java-app_1    | ... 60 more
java-app_1    | |#]

Any idea what I should do to avoid that ?

Thanks.

Steve Millidge

unread,
Aug 24, 2017, 7:31:50 AM8/24/17
to Payara Forum
This looks like it could be a bug. Can you post it as an issue on the GitHub project. https://github.com/payara/Cloud-Connectors 


On Tuesday, 22 August 2017 01:21:03 UTC+1, Jérôme Ky wrote:
Reply all
Reply to author
Forward
0 new messages