Measure Peformance on Generic Sync
Hi,
I do a trace in my generic synchronization. I take the time when i call the method
synchronizeWithBackeEnd, in function on MI Server i take the time when the synchronization arrives and when it leave to MI Client. This time i return to method, to display for me to analisy the times.
Results:
- Windows Desktop:
Call synchronizeWithBackend: 06:30:30
Arrive in RFC: 06:30:32
Leave RFC: 06:30:32
Come back to MI Client: 06:30:33
- Windows Mobile 2003
Call synchronizeWithBackend: 06:32:30
Arrive in RFC: 06:30:40
Leave RFC: 06:30:40
Come back to MI Client: 06:30:42
The time of sync on Windows Destkop is very good.
On Windows Mobile 2003, what i don't understand is the time that the sync during of the Call synchronizeWithBackend until arrive in RFC. If the time call synchronizeWithBackend to Arrive in RFC and Leave RFC to Come back to MI client will be the same or almost the same, i understand, but the difference is very big. Can anyone help me to understand that? Can be MI Client version to Windows Mobile the problem?
Regards,
Bruno
Hi Nameeta,
I have a RFC that do a search and returns the result. But the return are few data. All RFCs are with the same time on synchronization.
At the beginning of RFC i call take the time and at the end too. This times i return to MI Client and display them.
Can you help?
Thanks.
Regards,
Bruno
Similar Messages
-
Problem with persistence in Generic Sync application
Hi:
We are developing an application which runson SAP Mi 2.5, SP 18,
Windows Mobile 5.0 and Generic Sync for PDAs.
We need persistence in our application. We tried with persistence API but
we found a problem and we send a message to SAP. Until we can solve
this issue we must implement persistence in other way to satisfy our customer requierements
Since now,we have implemented persistence with files but the performance of this solution does not meet our customer requirements (the search of data in the PDA is very slow).
We are thinking in another solution, which consists on using
Syncbos.Using this alternative, before making a generic sync, and
executing the code shown below:
SmartSyncRuntime.getInstance().getSyncBoDescriptorFacade
().getAllSyncBoDescriptors()
the returned syncBOS are those which I have defined in XML. On the
contrary, after making a generic sync, executing the same code, the
returned syncbos ARE NOT those whic I have defined in XML. The only
return that I get is the MIAUTH.
Any other ideas?
Thanks
Kind Regardshi satur,
there are some things to take care if you want to use the persistence layer of the
SmartSync layer from your GenericSync app.
first, you have to let the MI client think that your application is using the
SmartSync functionality. this can be achieved by just including a dummy metadata
meRepMeta.xml file in the war archive during the deployment process. once the
MI client framework sees this during the installation, it will set a flag on the MSD
that your app is a smartsync.
second, if your app is considered a smartsync, MI will generate the delta request
and upload messages for your data if ever you have your SyncBo defined in the
metadata. Since you don't want such functionalities to be ON, i would suggest to
mark all your SyncBo as local ones; i.e. using attributes suppressDownload=true
and suppressUpload=true. this way, the MI framework will skip creating the requests
and delta upload messages for your app during the synchronization process.
third, your application has to have the syncEventListener implementation to get
notification when the Sync button (or event) was initiated. if you don't want your
app to be notified, you may just add synchronization button within your application
that will call your data manager to prepare your containers (i.e. retrieving the newly
inserted syncbo, modified syncbos and the list of deleted ones -> genericSync
containers) and to call the synchronizeWithBackend method.
fourth, you need to have the inboundProcessor that will parse your data and insert
them a SyncBo into your local database.
having tried this but i guess it might work...
regards
jo -
Generic Sync Application and Persistence DB2e
Hi all,
I have a generic sync application. I need persistence and so, I have created a xml file with many syncbo to manage the persistence with db2e. If I execute the statement before the synchronization:
SmartSyncRuntime.getInstance().getSyncBoDescriptorFacade().getAllSyncBoDescriptors().size()
the result is five (because I have five syncbo).
But when I do a generic synchronization and I try to store data of this synchronization into syncbo, I get an exception because only there is one syncbo.
In fact, the previous statement returns only one synbo. This syncbo is called MIAUTH and I don´t have defined it.
How can I solve this issue? Thanks a lot.
Regards,Hi all,
I know it is better to use persistence API than syncbos in generic sync application but we have many problems with persistence API and SP versions. While SAP solve our problems we are searching any alternative.
We use MVC and after doing generic synchronization, if the application generates a event and navigate to other jsp and in it, the application generates other event, I get all of my syncbos.
How could I simulate it, after generic sync finishes, in the same method by code? Any ideas?
Thanks and Regads. -
Problem in Generic Sync example
Hi
I downloaded the generic sync templete from the MDK documentation and deployed it to my MI client but when i try to get the information from the WEBAS it is giving the following error
Error: 500
Location: /SAMPLE_GENERICSYNC/start
Internal Servlet Error:
java.lang.NullPointerException
at com.sap.ip.me.sync.SyncHeader.(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.(Unknown Source)
at com.sap.ip.me.sync.ContainerFactory.createOutboundContainer(Unknown Source)
at genericsyncexample1.GenericSyncExample.getUserInfo(Unknown Source)
at genericsyncexample1.GenericSyncExample.doHandleEvent(Unknown Source)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:806)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:752)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:479)
The Trace error from the MI Client is
E There is no MSD for current application (genericsync_simple)
how do i set the MSD for the Application?
do i have to make any changes to the template and then deploye or is there anything missing in the SAP WebAS installed?
i also checked the BWAFMAPP table for the method name "MDK_USER_INFO_READ"
Thanks and Regards
GopiHi Gopi!
You are getting the following error from the Trace error from the MI Client is
"E There is no MSD for current application "(genericsync_simple)
Is that right?
(1) Log On to MI Web Console, Verify you have Uploaded the Mobile Component "genericsync_simple" correctly in the MI WebConsole.Since you have deployed the application in MI Client you should have your MCD Description here.Make sure the deployment info is correct.
(2) Log on to SAP MI Server and go to transaction MCD and then display your MCD "genericsync_simple' and make sure the information provided under Deployment Tab matches correctly with your info in MI Web Console.It should be the same.
(3) You have already checked table BWAFMAPP for method MDK_USER_INFO_READ and make sure you have the correct BAPI Wrapper assigned here.You are fine here i guess.
(4)Verify that table MEMAPPDEST has the correct RFC Destination defined for the Method MDK_USER_INFO_READ.
(5) Did you Re-Start your MI Client after the First Sync that deployed the application in your MI Client.
Setting up MCD is part of Step 1 and 2.You should have completed it already.
Let me know your results.
Thanks
Gisk
Message was edited by: Sivakumar Ganesan(Gisk) -
How to see the data in data containers when working on Generic Sync ?
Hi All,
I am working on Mobile Sales For HandHeld Generic Sync based application. To check the data transafer from Mi Client > MI server> CRM backend, we are using Generic Sync Queue Monitor in NWA. But how to check the actual dara in data containers showed on the monitor? Any specific transaction ( e.g. merep_mon for smart sync) to chk the same?
Thanks & regards,
Rucha AtreHi,
This is a tedious process of viewing the data in the containers since there is no tool to monitor the same. The data sent from the client is stored MESYHEAD and MESYBODY. Once the entire processing is completed then the entries from this table is deleted. If the processing has failed or not taken place then the entries will in this table.
Data Containers will name value pairs with field name and data in the data field. This table will also contain data from smart sync applications.
Thanks..
Preetham S -
Problem with Generic Sync after upgrade
Hi guru,
I have this problem:
I have done a upgrade ME2.1 -> MI2.5 SP18.
I have a simple Generic sync application that using a simple Function Module:
<b>
function Z_ME_TEST_CONNECTION.
""Interfaccia locale:
*" EXPORTING
*" VALUE(STATUS) LIKE BWAFSYHEAD-STATUS
*" TABLES
*" INBOUND_CONTAINER STRUCTURE BWAFCONT
*" OUTBOUND_CONTAINER STRUCTURE BWAFCONT
perform CALL_OFFLINE_ME_METHOD using 'TEST_CONNECTION'
INBOUND_CONTAINER[]
OUTBOUND_CONTAINER[].
OUTBOUND_CONTAINER-FIELDNAME = 'RESULT_CONNECTION' .
OUTBOUND_CONTAINER-LINENUMBER = 0 .
OUTBOUND_CONTAINER-FIELDVALUE = 'OK'.
append OUTBOUND_CONTAINER.
endfunction.</b>
When i synchronize my mobile client it returns back
<b>"EWAF 001Could not execute method Z_ME_TEST_CONNECTION"</b>
Can anybody help me in resolving this?Hi Sivakumar, I have write the my FM in the BWAFMAPP and the RFC destination in MEMAPPDEST but i have tha same error.
This is my simple method in my application:
<b>public String testSync(String userName) {
String errormessage = null;
try {
// get user out of the SyncSettings
String user = Configuration.getInstance().getProperty(PropertyKeys.SYNCSETTINGS_USER, userName);
OutboundContainerFactory outfactory = OutboundContainerFactory.getInstance();
if (outfactory == null) {
errormessage = "testSync->OutboundContainerFactory.getInstance failed";
} else {
OutboundContainer out = outfactory.createOutboundContainer(
VisibilityType.SEPARATED,
R3_METHOD_TEST_SYNC,
OutboundContainer.TYPE_REQUEST);
// add the name that has been typed into the JSP
out.addItem(DC_I_USER_NAME, user.toUpperCase());
out.addItem(DC_I_NUMBER_OF_LINES,"0");
out.close();
// Start Sync
SyncManager.getInstance().synchronizeWithBackend(VisibilityType.SEPARATED);
catch (SyncException ex) {
errormessage = ex.getMessage();
catch (IllegalArgumentException ex) {
errormessage = ex.getMessage();
catch (Exception ex) {
errormessage = ex.getMessage();
finally {
System.out.println("testSync: errormessage="+errormessage);
return errormessage;
}</b>
You have anathor idea?
Thanks -
Is it posible migrate Generic Sync App from 2.5 to 7.1?
Hi,
is it posible migrate generic sync app genericsync_simple.war (from 2.5 sp16) to SAP NW Mobile 7.1??
Thanks,
RobertoHi Veera,
Yes, I do the steps that you tell me. I follow the Migration Guide offers by SAP.
I check the DO GENERIC_SYNC_C2S and GENERIC_SYNC_S2C and it was OK.
I check the destination and it was OK.
I check the new entries in corresponding tables, and it was OK.
When I sync, I can see in "Client Communication Session Monitoring", inside Seesion Information, one line of type Post Messages and it have a message of data object GENERIC_SYNC_C2S. But if I select "Go to message monitoring" it haven´t nothing.
But in message monitoring i can´t see the data object GENERIC_SYNC_C2S or GENERIC_SYNC_S2C
Any idea please?
Regards,
Roberto -
Difference Smart Sync - Generic Sync
Hi all,
sorry for this simple and maybe stupid question, but I am a newbie in this topic. Can anybody tell me the differnce between generic sync and smart sync and when do i have to use them? Can they be used mixed or only one of them?
Thanks in advance for getting light in my darkness.
Michaelhello Michael,
On the client-side's view:
GenericSync is a lower layer that is responsible for data transport, connection and configuration updates.
SmartSync is another layer working on top of the GenericSync. In other words, SmartSync layer is just a GenericSync application that offers a wide-variety of features thru the SmartSync apis.
Yes you could mix GenericSync and SmartSync features in your application.
regards
jo -
Hi,
i am an absoulte newbie in this area of mobile infrastructure.
I want to know if it is possible to call a BAPI in the backend from a JSP application with generic sync?
If yes, how does it work?
If no, how can i use that BAPIS anyway?
Thanx
Tim
Message was edited by: Tim Nees
Message was edited by: Tim NeesHi,
please check the following example in the MDK:
http://media.sdn.sap.com/public/html/submitted_docs/MI/MDK_2.5/content/appdev/genericsync/introduction.html
To generate wrapper modules for your bapis check out the transaction ME_WIZARD.
Rgds Thomas -
Programming generic sync with the MDK in 6.20
Has anyone been able to get the generic sync examples provided with the MDK working - GenericSyncExample.java in particular?
I imported and compiled the example without a problem but when I run it I get teh foll dump. Unfortunately the source code is not provided for the section which dumps so I cannot debug further...
Thanks
Ratna
2004-12-17 14:47:47 - Ctx( /NEWPROJECT ): Exception in: R( /NEWPROJECT + /start + null) - java.lang.NullPointerException
at com.sap.ip.me.sync.SyncHeader.<init>(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.<init>(Unknown Source)
at com.sap.ip.me.sync.SyncOutboundContainer.<init>(Unknown Source)
at com.sap.ip.me.sync.ContainerFactory.createOutboundContainer(Unknown Source)
at genericsyncexample1.GenericSyncExample.getUserInfo(GenericSyncExample.java:124)
at genericsyncexample1.GenericSyncExample.doHandleEvent(GenericSyncExample.java:81)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:806)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:752)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:479)Hello Ratna,
please be aware of the fact that a generic sync application needs a mobile solution descriptor (MSD) When you look at ther trace file in the log-directory of SAP ME you should find a similar entry:
"There is no MSD for current application (genericSyncExample)"
The missing MSD results in a missing conversation ID which leads to the NullpointerException that effectively is thrown in the class
ConversationIdHandler.getCurrentConversationId().
My current understanding is that the only way to get a MSD assigned, is to upload the application to the web console and install it from there on the client device.
However, this means that launching a genSync ME application from Eclipse is useless. I am wondering, if this is the way it was intended to be....
Best regards,
Tim -
Generic Sync: How to register 2 Outbound Methods
Hello,
i am developing a generic sync application.
I have registered a method for inbound+outbound.
It works well.Now i have a second method in the same application. I made the mapping in BWAFMAPP,but when i try to create a outbound container for the method,i get the exeption method is not registerd.
Coding: outfactory.createOutboundContainer(VisibilityType.USER_SHARED,2_METHOD,outboundContainer.TYPE_REQUEST);
I think i have to do something in doInitialize() for the second container ,but i don't know exactly what.
Can anyone help me?
RegardsHi,
go create a new class like this one:
import com.sap.ip.me.api.sync.InboundContainer;
import com.sap.ip.me.api.sync.InboundProcessor;
public class MyProc implements InboundProcessor {
public String getMethodName() {
return "R3_2_METHOD";
public void process(InboundContainer inboundContainer) {
System.out.println("Container for " + getMethodName() + " came in...");
then, register it at the Registry like this:
InboundProcessor i = new MyProc();
InboundProcessorRegistry.getInstance().register(i);
Cheers, Stefan -
Generic sync not work correctly
Hi,
We are trying to get the inbound container in Java application, we use the method
GetElementsWithFieldName(String) in the object InboundContainer, this method returns an array that has only one entry, but really the wrapper function in R3 returns 6500 entries.
Best regards.
Thanks all.
SCZhi Satur,
Is your Generic Sync Application Synchronous? you may find it in using the OutBoundContainer Type. if it is TYPE_OUTBOUND its asynchronous otherwise (TYPE_REQUEST) its synchronous. The same information can be found in MESYHEAD table entries too.
If it is Asynchrnous, then the MESYBODY Containers won't get deleted unless you sync from the client. if it is synchronous, it will disappear immediately.
I suggest your application be ASynchronous and check the same. If it still happens, there's some problem with your middleware. It is not taking the container as ASynchronous Processing. You'll have to go all over your Post-Installation Settings to check if all are right. (Tedious process indeed)
If it is synchrnous and your client is not receiving all the entries, the problem is with your receiver code handling. check your Process() method.
Regards
Ak. -
Generic sync issue, MI70SP14P5
Hi
Sometimes my generic sync unexpectedly stops on the mobile client on a PDA.
I have a JSP-application running in IBrowse on Intermec PDA. I know the PDA is connected as I have a remote connection open at the same time I was testing this.
This is from the trace.txt, does anyone know what it mean?
D End: Dumping file /MI/sync/(SHARED)/out/package.out
I Outbound file size for user (SHARED) is 2038
P Do not use http proxy (system properties update)
P Use following gateway for synchronization: https://mobizcm2.yara.com:443
I GzipDataCompression: Gzip data compression is switched on
P Sending outbound file compressed to server.
P Outbound file was compressedly sent.
I HttpSynchronizer caught exception java.net.SocketException: Unexpected end of file from server
java.net.SocketException: Unexpected end of file from server
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.b()
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.a()
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.b()
at com.sun.net.ssl.internal.www.protocol.https.HttpClient.a()
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.getInputStream()
at com.sap.ip.me.sync.HTTPSynchronizer.getInputStreamViaTimeOutOrNot()
at com.sap.ip.me.sync.HTTPSynchronizer.synchronize()
at com.sap.ip.me.sync.HTTPSynchronizer.synchronize()
at com.sap.ip.me.sync.HTTPSynchronizer.exchangeData()
at com.sap.ip.me.sync.SyncManagerImpl.processSyncCycle()
at com.sap.ip.me.sync.SyncManagerImpl.syncForUser()
at com.sap.ip.me.sync.SyncManagerImpl.processSynchronization()
at com.sap.ip.me.sync.SyncManagerImpl.synchronizeWithBackend()
at com.sap.ip.me.sync.SyncManagerImpl.synchronizeWithBackend()
at com.sap.ip.me.api.sync.SyncManager.synchronizeWithBackend()
at com.yara.industrial.yaraapp.sync.TestconnSynchronizationProvider.doSync()
at com.yara.industrial.yaraapp.bl.TestconnBl.checkConn()
at com.yara.industrial.yaraapp.sync.SyncHandling.Synchronize()
at com.yara.industrial.yaraapp.SyncServlet.doHandleEvent()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doGetThreadSafe()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doGet()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doPost()
at javax.servlet.http.HttpServlet.service()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.service()
at javax.servlet.http.HttpServlet.service()
at org.apache.tomcat.core.ServletWrapper.doService()
at org.apache.tomcat.core.Handler.service()
at org.apache.tomcat.core.ServletWrapper.service()
at org.apache.tomcat.core.ContextManager.internalService()
at org.apache.tomcat.core.ContextManager.service()
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection()
at org.apache.tomcat.service.TcpWorkerThread.runIt()
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run()
at java.lang.Thread.run()
Regs
ØyvindThank you Oliver!
I will test it and let you know if this is working better.
Regs
Øyvind -
Authentication on MI Server + Generic SYnc
Hi,
When we call a RFC by Generic Sync, if i call this RFC 10 times, MI Client do the authentication (user+password) on MI Server 10 times? If yes, is there a way to increase the performance to do this authentication?
Other... If a user is add in 10 devices, if he needs update password, Will he need update in this 10 devices?
Or there is a way to do the authentication online on MI Server?
Regards,
Bruno
Message was edited by:
Bruno Ambrozio
Message was edited by:
Bruno AmbrozioHi Nameeta,
This synchronization time is with Windows Mobile 2003...
10 seconds
MI Client -
> MI Server
<----
2 seconds
But, using the same WLAN, the tests with Windows Desktop are very differences...
3 seconds
MI Client -
> MI Server
<----
2 seconds
I know that the hardware of Windows Mobile is less powefull than Windows Desktop, but how i said the WLAN is the same... i would like to understand the large difference...
Thanks for your attention.
Regards,
Bruno -
Generic Sync. support for non-SAP backend
Hi
Does Generic synchronization allows mobile applications to call function module residing in any non-SAP backend.I am not sure about this.
The documentation for MDK says we have to use Business Connector for this.
Where can i find the Business Connector for this purpose.
Which non-SAP backends are supported by Generic Sync framework.
Regards
Ashwani Kr Sharma
HCL TechnologiesHello Ashwani,
have a look at http://service.sap.com/connectors. Here you will find also the SAP Business Connector.
Regards
Gregor
Maybe you are looking for
-
I really need help figuring this out i have my new ID with a new password, yet my old password and email are still on my icloud and app store and i am not able to log in at all with it.
-
Dbms_lob.trim not working ?
dbms_lob.trim not working ? ============================= I am using Oracle 11g/Sqldeveloper. I learned that dbms_lob.trim could be used to trim the CLOB items. I have the query SELECT dbms_lob.trim (WHATMEMO,3990) WHATMEMO_V FROM TEXT_TAB A; ORA-009
-
Using ABAP DATA FLOW to pull data from APO tables
I am trying to use an ABAP Data flow to pull data from APO and receive error 150301. I can do a direct table pull and receive no error, but when I try to put it in an ABAP data data flow I get the issue. Any help would be great.
-
My MacBook froze & now won't turn on.
My Macbook is not working. It first froze while I was using it, then it just turned off. I tried to turn it on but then it just stayed black but this time with a little blue square with a circle which is spinning. What should I do?
-
g'day all, I am wondering if there is a simple recording app out there that will just reside in the menu bar (not the dock). when i press a shortcut key, i want it to record through the microphone and when i let go of the button to save it in a folde