Hi Ming,

I copied all those jars to lib/commons, and they were correctly deployed in 
glassfish. I am still getting the same error at runtime in the trader_client 
application and it is related to the Open SSO agent as far I could see. You 
mentioned in the Readme.txt file,

openssoclientsdk.jar
        From: 
http://download.java.net/general/opensso/nightly/20090801.1/j2eeagents/

However, there is not a version for Glassfish there. I picked up a version for 
application server 9_0, so I think the problem is there.

"java.lang.ClassNotFoundException: com.sun.identity.agents.filter.AmAgentFilter"

I was not able to configure anything related to OpenSSO either, so it would be 
great if you include an small step by step guide in the readme.txt file to 
configure this on glassfish.

Thanks
Pablo.

-----Original Message-----
From: Ming Jin [mailto:[email protected]]
Sent: Sunday, September 27, 2009 7:39 PM
To: [email protected]
Subject: Re: Metro CBS

Hi Pablo,

Yes, there are some jars required for trader_client:

   -     commons-beanutils-1.8.0.jar
   -     commons-codec-1.3.jar
   -     commons-collections-3.2.1.jar
   -     commons-digester-2.0.jar
   -     commons-el.jar

You can download these jars from http://commons.apache.org/, and place them
under lib/commons/. Then re-run "ant redeploy" in the command line. For
trader_client, you need to run "ant STS redeploy" to deploy the STS version
of trader client.

I'll update the README and upload the new zip file to JIRA.

-- Ming Jin
On Fri, Sep 25, 2009 at 3:35 PM, Pablo Cibraro <[email protected]>wrote:

> Hi Ming,
>
> Yes, they are there. I have the following files in the
> trader_client/WEB-INF/lib folder,
>
> jsf-facelets.jar
> richfaces-api-3.3.1.GA.jar
> richfaces-impl-3.3.1.GA.jar
> richfaces-ui-3.3.1.GA.jar
> commons-logging-1.1.1.jar
> openssoclientsdk.jar
> mysql-connector-java-5.1.10-bin.jar
> jtds-1.2.2.jar
>
> The same war file was deployed to glassfish correctly in the domain2. I am
> still getting the following error in the server trace,
>
> [#|2009-09-25T10:29:58.416-0400|WARNING|sun-appserver9.1|javax.enterprise.system.tools.deployment|_ThreadID=13;_ThreadName=Timer-6;_RequestID=253d1162-58f2-4f42-bf21-e22275672416;|Cannot
> load com.sun.identity.agents.filter.AmAgentFilter reason :
> com.sun.identity.agents.filter.AmAgentFilter
> java.lang.ClassNotFoundException:
> com.sun.identity.agents.filter.AmAgentFilter
>         at
> com.sun.enterprise.loader.EJBClassLoader.findClassData(EJBClassLoader.java:741)
>        at
> com.sun.enterprise.loader.EJBClassLoader.findClass(EJBClassLoader.java:631)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
>         at
> com.sun.enterprise.deployment.annotation.impl.ModuleScanner.getElements(ModuleScanner.java:174)
>         at
> com.sun.enterprise.deployment.archivist.Archivist.processAnnotations(Archivist.java:405)
>        at
> com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:346)
>        at
> com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:318)
>        at
> com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:213)
>         at
> com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:763)
>        at
> com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:744)
>        at
> com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:349)
>        at
> com.sun.enterprise.deployment.backend.ModuleDeployer.loadDescriptors(ModuleDeployer.java:423)
>        at
> com.sun.enterprise.deployment.backend.WebModuleDeployer.deploy(WebModuleDeployer.java:157)
>        at
> com.sun.enterprise.deployment.backend.ModuleDeployer.doRequestFinish(ModuleDeployer.java:179)
>        at
> com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:191)
>         at
> com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
>         at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:919)
>        at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:276)
>        at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:294)
>        at
> com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.deploy(ApplicationsConfigMBean.java:555)
>         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
> com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:375)
>        at
> com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:358)
>        at
> com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:464)
>         at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
>        at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
>         at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
>        at $Proxy1.invoke(Unknown Source)
>        at
> com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
>        at
> com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174)
>         at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.invokeDeploymentService(AutoDeployer.java:564)
>        at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployJavaEEArchive(AutoDeployer.java:545)
>        at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:492)
>        at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:267)
>         at
> com.sun.enterprise.deployment.autodeploy.AutoDeployControllerImpl$AutoDeployTask.run(AutoDeployControllerImpl.java:374)
>        at java.util.TimerThread.mainLoop(Timer.java:512)
>        at java.util.TimerThread.run(Timer.java:462)
> |#]
>
> [#|2009-09-25T10:29:58.425-0400|WARNING|sun-appserver9.1|javax.enterprise.system.tools.deployment|_ThreadID=13;_ThreadName=Timer-6;_RequestID=253d1162-58f2-4f42-bf21-e22275672416;|Cannot
> load com.sun.identity.agents.filter.AmAgentFilter reason :
> com.sun.identity.agents.filter.AmAgentFilter
> java.lang.ClassNotFoundException:
> com.sun.identity.agents.filter.AmAgentFilter
>         at
> com.sun.enterprise.loader.EJBClassLoader.findClassData(EJBClassLoader.java:718)
>        at
> com.sun.enterprise.loader.EJBClassLoader.findClass(EJBClassLoader.java:631)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
>         at
> com.sun.enterprise.deployment.annotation.impl.ModuleScanner.getElements(ModuleScanner.java:174)
>         at
> com.sun.enterprise.deployment.annotation.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:127)
>        at
> com.sun.enterprise.deployment.archivist.Archivist.processAnnotations(Archivist.java:445)
>        at
> com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:346)
>        at
> com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:318)
>        at
> com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:213)
>         at
> com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:763)
>        at
> com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:744)
>        at
> com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:349)
>        at
> com.sun.enterprise.deployment.backend.ModuleDeployer.loadDescriptors(ModuleDeployer.java:423)
>        at
> com.sun.enterprise.deployment.backend.WebModuleDeployer.deploy(WebModuleDeployer.java:157)
>        at
> com.sun.enterprise.deployment.backend.ModuleDeployer.doRequestFinish(ModuleDeployer.java:179)
>        at
> com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:191)
>         at
> com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
>         at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:919)
>        at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:276)
>        at
> com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:294)
>        at
> com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.deploy(ApplicationsConfigMBean.java:555)
>         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
> com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:375)
>        at
> com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:358)
>        at
> com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:464)
>         at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
>        at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
>         at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
>        at $Proxy1.invoke(Unknown Source)
>        at
> com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
>        at
> com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174)
>         at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.invokeDeploymentService(AutoDeployer.java:564)
>        at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployJavaEEArchive(AutoDeployer.java:545)
>        at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:492)
>        at
> com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:267)
>         at
> com.sun.enterprise.deployment.autodeploy.AutoDeployControllerImpl$AutoDeployTask.run(AutoDeployControllerImpl.java:374)
>        at java.util.TimerThread.mainLoop(Timer.java:512)
>        at java.util.TimerThread.run(Timer.java:462)
> |#]
>
> I think something is wrong with the openssoclientsdk.jar file I am using,
> or some other dependency is required.
>
> Thanks
> Pablo.
>
> -----Original Message-----
> From: Ming Jin [mailto:[email protected]]
> Sent: Friday, September 25, 2009 10:34 AM
> To: [email protected]
> Subject: Re: Metro CBS
>
> Hi, Joby & Pablo
>
> The problems are caused by missing of openssoclientsdk.jar/
> richfaces-impl-3.3.1.GA. Can you check whether there are these jars both
> under the corresponding directories and in the trader_client.war file.
>
> To check whether they are in the trader_client.war:
> 1. go to the directory build/war and find trader_client.war
> 2. extract the war file with winrar
> 3. go to trader_client/WEB-INF/lib and see if they are there
>
> --Ming Jin
>
> On Fri, Sep 25, 2009 at 1:58 PM, Pablo Cibraro <[email protected]
> >wrote:
>
> > Thanks Ben. It's now compiling fine, however, I am getting an error at
> > runtime in the "trader_client" application. Is it working fine on your
> side
> > ?
> >
> > This is the error in the glassfish log,
> >
> >
> [#|2009-09-25T08:51:17.244-0400|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=10;_ThreadName=main;_RequestID=febae985-e1e9-4909-97d0-0e56b310cdc8;|WebModule[/trader_client]PWC1270:
> > Exception starting filter Agent
> > java.lang.ClassNotFoundException:
> > com.sun.identity.agents.filter.AmAgentFilter
> >         at
> >
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1498)
> >        at
> >
> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:235)
> >        at
> >
> org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:369)
> >        at
> >
> org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
> >        at
> >
> org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4389)
> >        at
> > org.apache.catalina.core.StandardContext.start(StandardContext.java:5189)
> >        at com.sun.enterprise.web.WebModule.start(WebModule.java:326)
> >         at
> > com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase._submit(RunnableBase.java:176)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.submit(RunnableBase.java:192)
> >         at
> >
> com.sun.enterprise.web.VirtualServer.startChildren(VirtualServer.java:1672)
> >        at
> > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1231)
> >        at
> > org.apache.catalina.core.StandardHost.start(StandardHost.java:955)
> >         at
> > com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase._submit(RunnableBase.java:176)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.submit(RunnableBase.java:192)
> >         at
> >
> com.sun.enterprise.web.EmbeddedWebContainer$WebEngine.startChildren(EmbeddedWebContainer.java:453)
> >        at
> > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1231)
> >        at
> > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:533)
> >        at org.apache.catalina.startup.Embedded.start(Embedded.java:936)
> >        at
> com.sun.enterprise.web.WebContainer.start(WebContainer.java:873)
> >        at
> >
> com.sun.enterprise.web.PEWebContainer.startInstance(PEWebContainer.java:790)
> >        at
> >
> com.sun.enterprise.web.PEWebContainerLifecycle.onStartup(PEWebContainerLifecycle.java:84)
> >        at
> >
> com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:442)
> >        at
> >
> com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:120)
> >        at com.sun.enterprise.server.PEMain.run(PEMain.java:411)
> >        at com.sun.enterprise.server.PEMain.main(PEMain.java:338)
> >         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 com.sun.enterprise.server.PELaunch.main(PELaunch.java:412)
> > |#]
> >
> >
> [#|2009-09-25T08:51:17.246-0400|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=10;_ThreadName=main;_RequestID=febae985-e1e9-4909-97d0-0e56b310cdc8;|WebModule[/trader_client]PWC1270:
> > Exception starting filter richfaces
> > java.lang.ClassNotFoundException: org.ajax4jsf.Filter
> >         at
> >
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1498)
> >        at
> >
> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:235)
> >        at
> >
> org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:369)
> >        at
> >
> org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
> >        at
> >
> org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4389)
> >        at
> > org.apache.catalina.core.StandardContext.start(StandardContext.java:5189)
> >        at com.sun.enterprise.web.WebModule.start(WebModule.java:326)
> >         at
> > com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase._submit(RunnableBase.java:176)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.submit(RunnableBase.java:192)
> >         at
> >
> com.sun.enterprise.web.VirtualServer.startChildren(VirtualServer.java:1672)
> >        at
> > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1231)
> >        at
> > org.apache.catalina.core.StandardHost.start(StandardHost.java:955)
> >         at
> > com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase._submit(RunnableBase.java:176)
> >        at
> >
> com.sun.appserv.management.util.misc.RunnableBase.submit(RunnableBase.java:192)
> >         at
> >
> com.sun.enterprise.web.EmbeddedWebContainer$WebEngine.startChildren(EmbeddedWebContainer.java:453)
> >        at
> > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1231)
> >        at
> > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:533)
> >        at org.apache.catalina.startup.Embedded.start(Embedded.java:936)
> >        at
> com.sun.enterprise.web.WebContainer.start(WebContainer.java:873)
> >        at
> >
> com.sun.enterprise.web.PEWebContainer.startInstance(PEWebContainer.java:790)
> >        at
> >
> com.sun.enterprise.web.PEWebContainerLifecycle.onStartup(PEWebContainerLifecycle.java:84)
> >        at
> >
> com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:442)
> >        at
> >
> com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:120)
> >        at com.sun.enterprise.server.PEMain.run(PEMain.java:411)
> >        at com.sun.enterprise.server.PEMain.main(PEMain.java:338)
> >         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 com.sun.enterprise.server.PELaunch.main(PELaunch.java:412)
> > |#]
> >
> > Could this error be related to the openssoclientsdk.jar version I used ?.
> > The Readme.txt file points to this folder to download this file,
> > http://download.java.net/general/opensso/nightly/20090801.1/j2eeagents/.
> > However, there are multiple versions there, for different app servers I
> > think.
> >
> > Thanks
> > Pablo.
> >
> >
> > -----Original Message-----
> > From: Ben Dewey [mailto:[email protected]]
> > Sent: Thursday, September 24, 2009 7:05 PM
> > To: [email protected]
> > Subject: RE: Metro CBS
> >
> > Its under promoted, not nightly.
> >
> >
> > -----Original Message-----
> > Date: Thursday, September 24, 2009 5:47:19 pm
> > To: [email protected]
> > From: "Pablo Cibraro" <[email protected]>
> > Subject: RE: Metro CBS
> >
> > Hi Ben,
> >
> > Could you tell me where did you get the July 13 build ?. I can not find
> it
> > in the metro website, only the September version is there.
> >
> > Thanks
> > Pablo.
> >
> >
> > -----Original Message-----
> > From: Ben Dewey [mailto:[email protected]]
> > Sent: Thursday, September 24, 2009 6:39 PM
> > To: [email protected]
> > Subject: RE: Metro CBS
> >
> > Ming,
> >
> > I tried it again today and got a successful build of the Metro CBS code.
> >
> > I'm using JDK 6u16 x64 and July 13 promoted build of metro.  (Still fails
> > with numerous errors using the Sept 24 nightly)
> >
> > I also had install JAX-WS 2.2 on Glassfish and in the jre/lib/endorsed
> > folder.
> >
> > -Ben Dewey
> >
> >
> >
> > -----Original Message-----
> > From: Ming Jin [mailto:[email protected]]
> > Sent: Thursday, September 24, 2009 10:05 AM
> > To: [email protected]
> > Subject: Re: Metro CBS
> >
> > Hi Ben,
> > We have been using JDK6 and the Nightly metro from July 6, and they
> really
> > work fine.
> >
> > Don't know the differences between these two, I'm going to do some
> research
> > later.
> >
> > You can find Metro/wsit sam
> >
> >
> >
> >
>
>
> --
> Ming Jin
>
> Consultant
> Thoughtworks, Inc
> Twitter: https://twitter.com/mingjin
>



--
Ming Jin

Consultant
Thoughtworks, Inc
Twitter: https://twitter.com/mingjin

Reply via email to