apache-royale - 如何从 apache Royale uisng RemoteObject 与 Spring +blazeDS 服务对话
问题描述
我在这里有疑问现在我最不担心 UI。我的最终目标是从 Apache Royale 远程对象与 Spring Services(在 remoting-config.xml 中定义的 BlazeDS 目标)交谈。
我就这样开始了我的工作。1)我已经在我现有的 spring 服务中创建了方法,该方法与前面提到的 balzeDs 集成。2)我已经使用 apache Royale 编写了一个新项目,它只是试图与 Spring 服务交谈。然后,在我在同一个 tomcat 中部署了 2 个 WARS 之后,我无法从 apache royale 与我的服务交谈,因为它给出了一个错误。
我的 MXML:
<fx:Declarations>
<mx:RemoteObject id="loaderService" endpoint="http://localhost:8081/STARS/messagebroker/amf"
destination="reportService" result="handleLoadResult(event)" fault="handleFault(event)" showBusyCursor="true" />
<mx:RemoteObject id="remoteObject" destination="helloWorldRemotingService" endpoint="http://localhost:8081/STARS/messagebroker/amf"
result="handleLoadResult(event)" fault="handleFault(event)" showBusyCursor="true"/>
</fx:Declarations>
<mx:VBox width="400">
<mx:HBox>
<mx:VBox>
<mx:Label text="Name to send via AMF"/>
<mx:TextInput id="name_txt"/>
</mx:VBox>
<mx:Button label="Send to Name" click="loaderService.welcome()"/>
</mx:HBox>
<mx:Label text="{loaderService.welcome.lastResult}" height="15"/>
</mx:VBox>
我的错误:
Exception: java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1373)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.sp.cpem.filter.ExceptionHandlerFilter.doFilterInternal(ExceptionHandlerFilter.java:25)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
[
errorReply: Flex Message (flex.messaging.messages.ErrorMessage)
clientId = 470F44C5-680A-3F0D-D58C-605A866C0B1F
correlationId =BlazeDS]Unhandled error when processing a message: java.lang.NullPointerException
incomingMessage: Flex Message (flex.messaging.messages.RemotingMessage)
operation = null
clientId = 470F44C5-680A-3F0D-D58C-605A866C0B1F
destination = null
messageId =
timestamp = 1557396783081
timeToLive = 0
body =
[
{headers={DSMessagingVersion=1, DSId=nil}, timeToLive=0, clientId=null, destination=, messageId=4CC0F8ED-8234-AEA2-F9B4-5CD3FD2D0DF0, correlationId=, body={}, operat
ion=5, timestamp=0}
]
hdr(DSEndpoint) = my-amf
destination = null
messageId = 470F4616-520F-9E4E-0484-14188756FFA6
timestamp = 1557396783218
timeToLive = 0
body = null
code = Server.Processing
message = There was an unhandled failure on the server. java.lang.NullPointerException
details = null
rootCause = null
body = null
extendedData = null
Service:
public class HelloWorldRemotingService {
private static Log logger = LogFactory.getLog(HelloWorldRemotingService.class);
public HelloWorldRemotingService() {
super();
logger.debug("#################################Helloworld###############################################################");
}
public String processHello(final String nameToSayHelloTo)
{
logger.debug("** Found @@@@@@@@@@@@@@@@@@@records:");
return "Hello, " + nameToSayHelloTo + "!";
}
}
Remote-config.xml:
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="alertHomeService">
<properties>
<source>com.sp.cpem.service.AlertHomeService</source>
</properties>
</destination>
<destination id="helloWorldRemotingService">
<properties>
<source>com.sp.cpem.service.HelloWorldRemotingService</source>
</properties>
</destination>
请提供我的步骤,如果有人有示例,请告诉我。提前致谢
解决方案
我看到您在 Royale(MXRoyale 库)中使用 MX 仿真组件。这是一个工作示例项目,您可以使用示例 java 项目对其进行测试。
关于您的代码 RemoteObject 声明有一个以“”结尾的端点amf
,但对于您显示的代码,它似乎以“ my-amf
”结尾。
然后你在java中调用一个welcome()
方法,但似乎你的服务没有那个方法。你有processHello
.
您必须仔细检查代码,以确保所有点都得到了充分利用。
推荐阅读
- android - 未设置 PlaceSelectionListener。没有结果将被交付
- push - 尝试使用预提交设置预推送挂钩
- javascript - 从 NodeJS 读取 CSV 数据到 AngularJS 只显示带有数据 $$state 的 promise 对象。如何访问这些数据?
- javascript - 删除搜索栏中的 searchTerm 时搜索功能不起作用
- html - 样式标签中的 CSS 样式未正确应用于页面
- javascript - 如何从另一个文件(在 iframe 内)加载一个文件中的 div
- angular - Ionic 4 发布到 Facebook 页面
- sql-server - Varchar 到 nvarchar 不改变长度
- sql-server - SQL Server 中的 Postgres MD5() 等价物是什么?
- c++ - 我应该声明我的函数模板特化还是足够定义它们?