Dropbox and pyinotify - dropbox

I just got an iPad and I foolishly got the TexTouch application. Foolishly, because due to Apple regulation, TexTouch can't compile Tex. It syncs the .tex file to a computer using Dropbox. On the distant computer, it gets caught by another program that compiles the .tex file to PDF and sends it back. But (surprise!) that distant program in Windows and Mac only. And I'm on Linux. So I thought, why not use inotify? To make things a bit simpler, I actually used pyinotify so I wouldn't have to deal with tons of compilation. BUT when Dropbox drops a file, here are, in pyinotify vernacular, the events that happen. (Obviously, "first doc.tex" is the name of the file I'm syncing.)
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event cookie=151401 dir=False mask=0x40 maskname=IN_MOVED_FROM name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event cookie=151402 dir=False mask=0x80 maskname=IN_MOVED_TO name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x4 maskname=IN_ATTRIB name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
What can I make of that? The only events that appear to be unique are the IN_MOVE_FROM and IN_MOVE_TO events. But it looks like a BAD idea to monitor those. Is there a way to detect an event that is initiated by Dropbox? Should I use something other than inotify or pyinotify?

Well, IN_OPEN (file opened for reading), IN_ACCESS (file accessed) and IN_ATTRIB (file attributes modified) are obviously not what you need. IN_CLOSE_NOWRITE means that the file has been closed for reading (i.e. no changes could have been made), so that's also not what you need. So it'll have to be either IN_MOVED_FROM or IN_MOVED_TO.
Are you sure there are no other events happening whatsoever?
If you are, then the file is probably being created somewhere else and then being moved to its final location at ~/Dropbox.

I got a script working that watches for IN_MOVED_TO. Whenever Dropbox drops a new file, it is triggered. You should use IN_MOVED_TO.
<Event cookie=63896 dir=False mask=0x80 maskname=IN_MOVED_TO name=test.zip path=/home/bpotter/Dropbox/Apps/Backup pathname=/home/bpotter/Dropbox/Apps/Backup/test.zip wd=1 >

Related

Xquery only returning a single record

I've been trying to scrape information out of an Extended event I wrote in SQL2008r2 in an attempt to create some better form of error tracking on SQL.
I eventually got one working after a lot of trial and error, however it only seems to return the first row. I'm trying to read the information into a CTE so I can then do additional processing on the data and return it in a different format
What I've written
;with events_cte as(
select
DATEADD(mi,
DATEDIFF(mi, GETUTCDATE(), CURRENT_TIMESTAMP),
xevents.event_data.value('(RingBufferTarget/event/#timestamp)[1]', 'datetime2')) AS [Timestamp],
xevents.event_data.value('(RingBufferTarget/event/data[#name="severity"]/value)[1]', 'bigint') AS [Error Severity],
xevents.event_data.value('(RingBufferTarget/event/data[#name="message"]/value)[1]', 'nvarchar(512)') AS [Error Message],
xevents.event_data.value('(RingBufferTarget/event/action[#name="sql_text"]/value)[1]', 'nvarchar(max)') AS [SQL Text],
xevents.event_data.value('(RingBufferTarget/event/action[#name="username"]/value)[1]', 'nvarchar(max)') AS [Username],
xevents.event_data.value('(RingBufferTarget/event/action[#name="database_id"]/value)[1]', 'nvarchar(max)') AS [DatabaseID]
From(Select CAST(xet.target_data AS xml) as event_data
FROM sys.dm_xe_session_targets xet
INNER JOIN sys.dm_xe_sessions xe
ON (xe.address = xet.event_session_address)
WHERE xe.name = 'what_queries_are_failing') as xevents)
What I'm working with (an example)
<RingBufferTarget eventsPerSec="0" processingTime="0" totalEventsProcessed="55" eventCount="55" droppedCount="0" memoryUsed="161803">
<event name="error_reported" package="sqlserver" id="100" version="1" timestamp="2016-12-15T01:42:59.361Z">
<data name="error">
<type name="int32" package="package0" />
<value>50000</value>
<text />
</data>
<data name="severity">
<type name="int32" package="package0" />
<value>16</value>
<text />
</data>
<data name="state">
<type name="int32" package="package0" />
<value>1</value>
<text />
</data>
<data name="user_defined">
<type name="boolean" package="package0" />
<value>true</value>
<text />
</data>
<data name="message">
<type name="unicode_string" package="package0" />
<value>User Defined Exception!!!</value>
<text />
</data>
<action name="client_hostname" package="sqlserver">
<type name="unicode_string" package="package0" />
<value>hostname</value>
<text />
</action>
<action name="database_id" package="sqlserver">
<type name="uint16" package="package0" />
<value>1</value>
<text />
</action>
<action name="sql_text" package="sqlserver">
<type name="unicode_string" package="package0" />
<value>RAISERROR('User Defined Exception!!!', 16, 1)
</value>
<text />
</action>
<action name="tsql_stack" package="sqlserver">
<type name="unicode_string" package="package0" />
<value><frame level='1' handle='0x010001001561AB09005F28B1000000000000000000000000' line='1' offsetStart='0' offsetEnd='-1'/></value>
<text />
</action>
<action name="username" package="sqlserver">
<type name="unicode_string" package="package0" />
<value>user</value>
<text />
</action>
</event>
<event name="error_reported" package="sqlserver" id="100" version="1" timestamp="2016-12-15T01:42:59.361Z">
<data name="error">
<type name="int32" package="package0" />
<value>50000</value>
<text />
</data>
<data name="severity">
<type name="int32" package="package0" />
<value>16</value>
<text />
</data>
<data name="state">
<type name="int32" package="package0" />
<value>1</value>
<text />
</data>
<data name="user_defined">
<type name="boolean" package="package0" />
<value>true</value>
<text />
</data>
<data name="message">
<type name="unicode_string" package="package0" />
<value>User Defined Exception!!!</value>
<text />
</data>
<action name="client_hostname" package="sqlserver">
<type name="unicode_string" package="package0" />
<value>hostname</value>
<text />
</action>
<action name="database_id" package="sqlserver">
<type name="uint16" package="package0" />
<value>1</value>
<text />
</action>
<action name="sql_text" package="sqlserver">
<type name="unicode_string" package="package0" />
<value>RAISERROR('User Defined Exception!!!', 16, 1)
</value>
<text />
</action>
<action name="tsql_stack" package="sqlserver">
<type name="unicode_string" package="package0" />
<value><frame level='1' handle='0x010001001561AB09005F28B1000000000000000000000000' line='1' offsetStart='0' offsetEnd='-1'/></value>
<text />
</action>
<action name="username" package="sqlserver">
<type name="unicode_string" package="package0" />
<value>user</value>
<text />
</action>
</event>
</RingBufferTarget>
What I get: Only seems to return one row, could it be the CTE?
So my question is:
How can I get the rest of the records in the XML to be pulled through?
Any help or suggestions would be greatly appreciated.
You have to do following changes:
[1]
FROM sys.dm_xe_session_targets xet
INNER JOIN sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address)
OUTER APPLY xevents.event_data.nodes('RingBufferTarget/event') AS x(XmlCol)
[2] from
xevents.event_data.value('(RingBufferTarget/event/#timestamp)[1]', 'datetime2')) AS [Timestamp],
xevents.event_data.value('(RingBufferTarget/event/data[#name="severity"]/value...
to
x.XmlCol.value('(#timestamp)[1]', 'datetime2')) AS [Timestamp],
x.XmlCol.value('(data[#name="severity"]/value...

Index rebuild fails in sitecore 7

I have been working on the ContentSearchAPI in sitecore.Here is my configuration for Lucene Search configuration.
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<configuration type="Sitecore.ContentSearch.ContentSearchConfiguration, Sitecore.ContentSearch">
<indexes hint="list:AddIndex">
<index id="movieshop_master" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider">
<param desc="name">$(id)</param>
<param desc="folder">$(id)</param>
<!-- This initializes index property store. Id has to be set to the index id -->
<param desc="propertyStore" ref="contentSearch/databasePropertyStore" param1="$(id)" />
<configuration ref="contentSearch/indexConfigurations/movieShopSearchConfiguration" />
<strategies hint="list:AddStrategy">
<!-- NOTE: order of these is controls the execution order -->
<strategy ref="contentSearch/indexUpdateStrategies/syncMaster" />
</strategies>
<commitPolicyExecutor type="Sitecore.ContentSearch.CommitPolicyExecutor, Sitecore.ContentSearch">
<policies hint="list:AddCommitPolicy">
<policy type="Sitecore.ContentSearch.TimeIntervalCommitPolicy, Sitecore.ContentSearch" />
</policies>
</commitPolicyExecutor>
<locations hint="list:AddCrawler">
<crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
<Database>master</Database>
<Root>/sitecore/content/movieshop</Root>
</crawler>
</locations>
</index>
</indexes>
</configuration>
<indexConfigurations>
<movieShopSearchConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider">
<indexAllFields>true</indexAllFields>
<initializeOnAdd>true</initializeOnAdd>
<analyzer ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration/analyzer" />
<fieldMap type="Sitecore.ContentSearch.FieldMap, Sitecore.ContentSearch">
<fieldNames hint="raw:AddFieldByFieldName">
<field fieldName="_uniqueid" storageType="YES" indexType="TOKENIZED" vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">
<analyzer type="Sitecore.ContentSearch.LuceneProvider.Analyzers.LowerCaseKeywordAnalyzer, Sitecore.ContentSearch.LuceneProvider" />
</field>
</fieldNames>
</fieldMap>
<fields hint="raw:AddComputedIndexField">
<field fieldName="releasedecade">MovieShop.BusinessLayer.Search.ComputedFields.DecadeComputedField,MovieShop.BusinessLayer</field>
</fields>
<include hint="list:IncludeTemplate">
<Movie>{7D2F4318-029A-461B-854E-FD7CFB4C4F6A}</Movie>
</include>
<fieldReaders ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration/fieldReaders"/>
<indexFieldStorageValueFormatter ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration/indexFieldStorageValueFormatter"/>
<indexDocumentPropertyMapper ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration/indexDocumentPropertyMapper"/>
</movieShopSearchConfiguration>
</indexConfigurations>
</contentSearch>
</sitecore>
</configuration>
The above configuration works fine in sitecore version 7.2 but when i try to use the same configuration in Sitecore 7 it fails.I'm getting the following error.
Could not create instance of type:
Sitecore.ContentSearch.LuceneProvider.LuceneIndex. No matching
constructor was found
Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider
should be
Sitecore.ContentSearch.ContentSearchConfiguration, Sitecore.ContentSearch

[restlet ]TruncatedChunkException:

For my project (http://snooze.inria.fr/) i have dependencies on java library restlet.
If I set up the dependency to restlet 2.2-SNAPSHOT a TruncatedChunkException when visualizing the hierarchy on the client (it's a big json received form the system)
If I set up the dependency to restlet 2.1-SNAPSHOT i have no error, everything looks fine.
Do you know why ?
Best Regards,
Matt
ps :
here the stack trace :
org.restlet - Unable to convert a [application/json] representation into an object of class org.inria.myriads.snoozecommon.communication.groupmanager.repository.GroupLeaderRepositoryInformation
org.apache.http.TruncatedChunkException: Truncated chunk ( expected size: 2085; actual size: 1997)
at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:182)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:138)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.PushbackInputStream.read(PushbackInputStream.java:186)
[...]
Here an example of json : (it's basically a list of hosts hosting vm's with their attributes)
groupManagerDescriptions":[{"id":"4d415a3b-579d-4fcd-8700-f2d4a2242401","listenSettings":{"controlDataAddress":{"address":"127.0.0.1","port":6001},"monitoringDataAddress":{"address":"127.0.0.1","port":7000}},"localControllers":{"52a3e5b1-2354-4d67-ab52-c6b38efd20c5":{"id":"52a3e5b1-2354-4d67-ab52-c6b38efd20c5","controlDataAddress":{"address":"127.0.0.1","port":6003},"status":"ACTIVE","hypervisorSettings":{"port":16509,"driver":"qemu","transport":"tcp","migration":{"method":"forceunsafe","timeout":60}},"totalCapacity":[4.0,3958916.0,131072.0,131072.0],"wakeupSettings":{"driver":"IPMI","options":"-I lanplus -H BMC_IP -U user -P password"},"hostname":"mafalda","virtualMachineMetaData":{"debian1":{"status":"RUNNING","virtualMachineLocation":{"virtualMachineId":"debian1","localControllerControlDataAddress":{"address":"127.0.0.1","port":6003},"localControllerId":"52a3e5b1-2354-4d67-ab52-c6b38efd20c5"},"usedCapacity":{},"requestedCapacity":[1.0,512000.0,12800.0,12800.0],"ipAddress":"192.168.122.2","errorCode":"UNKNOWN","groupManagerControlDataAddress":{"address":"127.0.0.1","port":6001},"xmlRepresentation":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><domain type=\"kvm\"> <name>debian1</name> <memory>512000</memory> <vcpu>1</vcpu> <os> <type arch=\"x86_64\" machine=\"pc-0.12\">hvm</type> <boot dev=\"hd\"/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset=\"utc\"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk device=\"disk\" type=\"file\"> <driver name=\"qemu\" type=\"qcow2\"/> <source file=\"/home/msimonin/Images-VM/Snooze-images/imgs/debian1.qcow2\"/> <target bus=\"virtio\" dev=\"vda\"/> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x0\" slot=\"0x05\" type=\"pci\"/> </disk> <controller index=\"0\" type=\"ide\"> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x1\" slot=\"0x01\" type=\"pci\"/> </controller> <interface type=\"bridge\"> <mac address=\"54:56:c0:a8:7a:2\"/> <source bridge=\"virbr0\"/> </interface> <serial type=\"pty\"> <target port=\"0\"/> </serial> <console type=\"pty\"> <target port=\"0\" type=\"serial\"/> </console> <graphics autoport=\"yes\" listen=\"0.0.0.0\" port=\"-1\" type=\"vnc\"/> <input bus=\"usb\" type=\"tablet\"/> <input bus=\"ps2\" type=\"mouse\"/> <memballoon model=\"virtio\"> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x0\" slot=\"0x06\" type=\"pci\"/> </memballoon> </devices></domain>"},"debian3":{"status":"RUNNING","virtualMachineLocation":{"virtualMachineId":"debian3","localControllerControlDataAddress":{"address":"127.0.0.1","port":6003},"localControllerId":"52a3e5b1-2354-4d67-ab52-c6b38efd20c5"},"usedCapacity":{},"requestedCapacity":[1.0,128000.0,12800.0,12800.0],"ipAddress":"192.168.122.4","errorCode":"UNKNOWN","groupManagerControlDataAddress":{"address":"127.0.0.1","port":6001},"xmlRepresentation":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><domain type=\"kvm\"> <name>debian3</name> <memory>128000</memory> <vcpu>1</vcpu> <os> <type arch=\"x86_64\" machine=\"pc-0.12\">hvm</type> <boot dev=\"hd\"/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset=\"utc\"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk device=\"disk\" type=\"file\"> <driver name=\"qemu\" type=\"qcow2\"/> <source file=\"/home/msimonin/Images-VM/Snooze-images/imgs/debian3.qcow2\"/> <target bus=\"virtio\" dev=\"vda\"/> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x0\" slot=\"0x05\" type=\"pci\"/> </disk> <controller index=\"0\" type=\"ide\"> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x1\" slot=\"0x01\" type=\"pci\"/> </controller> <interface type=\"b"
[DEBUG] |févr. 04 10:44:20| [Thread-1] http.wire - << "ridge\"> <mac address=\"54:56:c0:a8:7a:4\"/> <source bridge=\"virbr0\"/> </interface> <serial type=\"pty\"> <target port=\"0\"/> </serial> <console type=\"pty\"> <target port=\"0\" type=\"serial\"/> </console> <graphics autoport=\"yes\" listen=\"0.0.0.0\" port=\"-1\" type=\"vnc\"/> <input bus=\"usb\" type=\"tablet\"/> <input bus=\"ps2\" type=\"mouse\"/> <memballoon model=\"virtio\"> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x0\" slot=\"0x06\" type=\"pci\"/> </memballoon> </devices></domain>"}},"assignedVirtualMachines":[]},"c56846f6-fd61-47d5-9f68-0fd2772aac4d":{"id":"c56846f6-fd61-47d5-9f68-0fd2772aac4d","controlDataAddress":{"address":"127.0.0.1","port":6004},"status":"ACTIVE","hypervisorSettings":{"port":16510,"driver":"qemu","transport":"tcp","migration":{"method":"forceunsafe","timeout":60}},"totalCapacity":[4.0,3958916.0,131072.0,131072.0],"wakeupSettings":{"driver":"IPMI","options":"-I lanplus -H BMC_IP -U user -P password"},"hostname":"mafalda","virtualMachineMetaData":{"debian2":{"status":"RUNNING","virtualMachineLocation":{"virtualMachineId":"debian2","localControllerControlDataAddress":{"address":"127.0.0.1","port":6004},"localControllerId":"c56846f6-fd61-47d5-9f68-0fd2772aac4d"},"usedCapacity":{},"requestedCapacity":[2.0,123456.0,12800.0,12800.0],"ipAddress":"192.168.122.3","errorCode":"UNKNOWN","groupManagerControlDataAddress":{"address":"127.0.0.1","port":6001},"xmlRepresentation":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><domain type=\"kvm\"> <name>debian2</name> <uuid>0f476e56-67ea-11e1-858e-00216a972a37</uuid> <memory>123456</memory> <vcpu>2</vcpu> <os> <type arch=\"x86_64\" machine=\"pc-0.12\">hvm</type> <boot dev=\"hd\"/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset=\"utc\"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk device=\"disk\" type=\"file\"> <driver name=\"qemu\" type=\"qcow2\"/> <source file=\"/home/msimonin/Images-VM/Snooze-images/imgs/debian2.qcow2\"/> <target bus=\"virtio\" dev=\"vda\"/> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x0\" slot=\"0x05\" type=\"pci\"/> </disk> <controller index=\"0\" type=\"ide\"> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x1\" slot=\"0x01\" type=\"pci\"/> </controller> <interface type=\"bridge\"> <mac address=\"54:56:c0:a8:7a:3\"/> <source bridge=\"virbr0\"/> </interface> <serial type=\"pty\"> <target port=\"0\"/> </serial> <console type=\"pty\"> <target port=\"0\" type=\"serial\"/> </console> <graphics autoport=\"yes\" listen=\"0.0.0.0\" port=\"-1\" type=\"vnc\"/> <input bus=\"usb\" type=\"tablet\"/> <input bus=\"ps2\" type=\"mouse\"/> <memballoon model=\"virtio\"> <address bus=\"0x00\" domain=\"0x0000\" function=\"0x0\" slot=\"0x06\" type=\"pci\"/> </memballoon> </devices></domain>"}},"assignedVirtualMachines":[]}},"heartbeatAddress":{"address":"225.4.5.6","port":10000},"hostname":"mafalda","summaryInformation":{"1359971059986":{"timeStamp":1359971059986,"usedCapacity":[4.0,763456.0,38400.0,38400.0],"requestedCapacity":[4.0,763456.0,38400.0,38400.0],"activeCapacity":[8.0,7917832.0,262144.0,262144.0],"passiveCapacity":[0.0,0.0,0.0,0.0],"legacyIpAddresses":[]},"1359971056979":{"timeStamp":1359971056979,"usedCapacity":[4.0,763456.0,38400.0,38400.0],"requestedCapacity":[4.0,763456.0,38400.0,38400.0],"activeCapacity":[8.0,7917832.0,262144.0,262144.0],"passiveCapacity":[0.0,0.0,0.0,0.0],"legacyIpAddresses":[]},"1359971053975":{"timeStamp":1359971053975,"usedCapacity":[3.0,635456.0,25600.0,25600.0],"requestedCapacity":[3.0,635456.0,25600.0,25600.0],"activeCapacity":[8.0,7917832.0,262144.0,262144.0],"passiveCapacity":[0.0,0.0,0.0,0.0],"legacyIpAddresses":[]},""
[...]

does not change the locale with using LocaleAction

i use struts 1.3 and want to make localization.
that's what I'm doing:
in struts-config.xml:
<form-bean name="English" type="org.apache.struts.action.DynaActionForm">
<form-property name="language" type="String" initial="en" />
</form-bean>
<form-bean name="Russian" type="org.apache.struts.action.DynaActionForm">
<form-property name="language" type="String" initial="ru" />
</form-bean>
<action-mappings>
<action path="/English" name="English"
type="org.apache.struts.actions.LocaleAction">
<forward name="success" path="/index.jsp" />
</action>
<action path="/Russian" name="Russian"
type="org.apache.struts.actions.LocaleAction">
<forward name="success" path="/index.jsp" />
</action>
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor" />
on jsp.page
<html:link action="/Russian">
<bean:message key="jsp.header.russian"/>
</html:link>
<html:link action="/English">
<bean:message key="jsp.header.english"/>
</html:link>
maybe i do something wrong? any ideas?
P.S. yes, i have messages_ru.properties and messages_en.properties.
Oh, I found the reason, struts do not know of this type as a String.
<form-property name="language" type="java.lang.String" initial="en" />

HTTP Status 503 - Servlet action is currently unavailable

I am using spring source dm server version 2.0.0.
I developed one application in spring/struts/hibernate. When I am running my application in spring dm server with
it gives me error like:
HTTP Status 503 - Servlet action is currently unavailable
type: Status report
message: Servlet action is currently unavailable
description: The requested service (Servlet action is currently unavailable) is not currently available.
My web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Spring Framework context Loader -->
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Spring Framework context config location -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext*.xml
</param-value>
</context-param>
<!--TODO Prevent direct calls to *.jsp -->
<!-- Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<!-- The Welcome File List -->
<welcome-file-list>
<welcome-file>start.jsp</welcome-file>
</welcome-file-list>
<!-- Define the basename for a resource bundle for I18N -->
<context-param>
<param-name>
javax.servlet.jsp.jstl.fmt.localizationContext
</param-name>
<param-value>
com.patni.temgt.web.ApplicationResources
</param-value>
</context-param>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/SettleTest</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
and struts-config.xml is:
<form-beans>
<form-bean name="timeEntryForm"
type="com.patni.temgt.web.CreateTimeEntryActionForm" />
<form-bean name="expenseEntryForm"
type="com.patni.temgt.web.CreateExpenseEntryActionForm" />
<form-bean name="timeEntryReportForm"
type="com.patni.temgt.web.TimeEntryReportActionForm" />
<form-bean name="adminCostingCodeForm"
type="com.patni.temgt.web.AdminCostingCodeActionForm" />
<form-bean name="loginForm"
type="com.patni.temgt.web.LoginActionForm" />
<form-bean name="adminEnvironmentVariableForm"
type="com.patni.temgt.web.AdminEnvironmentVariableActionForm" />
<form-bean name="adminEmployeeForm"
type="com.patni.temgt.web.AdminEmployeeActionForm" />
<form-bean name="adminContactDetailForm"
type="com.patni.temgt.web.AdminContactDetailActionForm" />
<form-bean name="adminApplicationUserForm"
type="com.patni.temgt.web.AdminApplicationUserActionForm" />
<form-bean name="adminUserRoleForm"
type="com.patni.temgt.web.AdminUserRoleActionForm" />
<form-bean name="myCostingCodeForm"
type="com.patni.temgt.web.MyCostingCodeActionForm" />
</form-beans>
<global-forwards>
<forward name="login" path="/WEB-INF/jsp/login.jsp" />
</global-forwards>
<action-mappings>
<action path="/timeEntry"
type="com.patni.temgt.web.CreateTimeEntryAction"
name="timeEntryForm" scope="session" validate="false"
input="/WEB-INF/jsp/timeEntry.jsp">
<forward name="success" path="/WEB-INF/jsp/timeEntry.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/timeEntry.jsp" />
</action>
<action path="/expenseEntry"
type="com.patni.temgt.web.CreateExpenseEntryAction"
name="expenseEntryForm" scope="session" validate="false"
input="/WEB-INF/jsp/expenseEntry.jsp">
<forward name="success" path="/WEB-INF/jsp/expenseEntry.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/expenseEntry.jsp" />
<forward name="list" path="/WEB-INF/jsp/expenseList.jsp" />
<forward name="approvallist" path="/expenseApproval.htm?action=list" redirect="true" />
</action>
<action path="/expenseApproval"
type="com.patni.temgt.web.ExpenseApprovalAction"
name="expenseEntryForm" scope="session" validate="false"
input="/WEB-INF/jsp/expenseApprovalList.jsp">
<forward name="approvallist" path="/WEB-INF/jsp/expenseApprovalList.jsp" />
</action>
<action path="/adminCostingCode"
type="com.patni.temgt.web.AdminCostingCodeAction"
name="adminCostingCodeForm" scope="session" validate="false"
input="/WEB-INF/jsp/adminCostingCode.jsp">
<forward name="success" path="/WEB-INF/jsp/adminCostingCode.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/adminCostingCode.jsp" />
</action>
<action path="/login"
type="com.patni.temgt.web.LoginAction"
name="loginForm" scope="session" validate="false"
input="/WEB-INF/jsp/login.jsp">
<forward name="mainPage" redirect="true"
path="/settleMain.htm" />
</action>
<action path="/settleMain"
type="com.patni.temgt.web.SettleMainAction">
<forward name="success" path="/WEB-INF/jsp/settleMain.jsp" />
</action>
<action path="/adminEnvironmentVariable"
type="com.patni.temgt.web.AdminEnvironmentVariableAction"
name="adminEnvironmentVariableForm" scope="session"
input="/WEB-INF/jsp/adminEnvironmentVariable.jsp">
<forward name="success"
path="/WEB-INF/jsp/adminEnvironmentVariable.jsp" />
<forward name="invalid"
path="/WEB-INF/jsp/adminEnvironmentVariable.jsp" />
</action>
<action path="/adminEmployee"
type="com.patni.temgt.web.AdminEmployeeAction"
name="adminEmployeeForm" scope="request"
input="/WEB-INF/jsp/adminEmployee.jsp">
<forward name="success" path="/WEB-INF/jsp/adminEmployee.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/adminEmployee.jsp" />
</action>
<action path="/adminContactDetail"
type="com.patni.temgt.web.AdminContactDetailAction"
name="adminContactDetailForm" scope="request"
input="/WEB-INF/jsp/adminContactDetail.jsp">
<forward name="employee" path="/adminEmployee.htm" />
<forward name="company" path="/adminCompany.htm" />
<forward name="success" path="/WEB-INF/jsp/adminContactDetail.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/adminContactDetail.jsp" />
</action>
<action path="/adminApplicationUser"
type="com.patni.temgt.web.AdminApplicationUserAction"
name="adminApplicationUserForm" scope="request"
input="/WEB-INF/jsp/adminApplicationUser.jsp">
<forward name="success" path="/WEB-INF/jsp/adminApplicationUser.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/adminApplicationUser.jsp" />
</action>
<action path="/adminUserRole"
type="com.patni.temgt.web.AdminUserRoleAction"
name="adminUserRoleForm" scope="request"
input="/WEB-INF/jsp/adminUserRole.jsp">
<forward name="success" path="/WEB-INF/jsp/adminUserRole.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/adminUserRole.jsp" />
</action>
<action path="/timeEntryReporting"
type="com.patni.temgt.web.TimeEntryReportAction"
name="timeEntryReportForm" scope="request"
input="/WEB-INF/jsp/timeEntryReporting.jsp">
<forward name="success" path="/WEB-INF/jsp/timeEntryReporting.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/timeEntryReporting.jsp" />
</action>
<action path="/myCostingCodes"
type="com.patni.temgt.web.MyCostingCodeAction"
name="myCostingCodeForm" scope="request"
input="/WEB-INF/jsp/myCostingCodes.jsp" parameter="method">
<forward name="success" path="/WEB-INF/jsp/myCostingCodes.jsp" />
<forward name="invalid" path="/WEB-INF/jsp/myCostingCodes.jsp" />
</action>
</action-mappings>
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
<!-- ========== Message Resources Definitions =========================== -->
<!-- Will look for a properties file
com.patni.temgt.web.ApplicationResources.properties" -->
<message-resources
parameter="com.patni.temgt.web.ApplicationResources" />
<!-- Start the Spring Web Context plugin for Struts -->
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/action-servlet.xml" />
</plug-in>
what could be the reason for this?
It means that the servlet identified by "action" (org.apache.struts.action.ActionServlet) failed to initialize, probably due to a configuration issue or a missing class on the class path.
There should be an exception printed in the console of your application server or in a log file. It probably will indicate what the problem is.