HTC One X gescheiterte Reparatur

Ach ja, mein schönes HTC One X. Mit dem neuen Update auf eine relativ neue Android Version hat sich mein One X zu einem schönen Smartphone geupdated für den täglichen gebrauch. Egal ob Feed oder auch mein Kalender meine täglichen Telefonate und das wirklich intensiv gebrauchte Headset haben mir gut gedient. Leider ist es mir letzte Woche aus der Tasche gefallen und auf die Kante. Das Resultat daraus könnt ihr euch ja denken.

DSCN0178 DSCN0177 DSCN0176 DSCN0169 DSCN0168 DSCN0167 DSCN0179

 

 

Jetzt kommt das fatale Ende, wir haben es nicht geschafft. Das LCD- Display ist gebrochen und ausgelaufen. Jetzt kommt Lösungsschritt zwei. Die Kombi- Einheit von Glass und Display ist bestellt und kommt hoffentlich rechtzeitig.

Ciao, bis die Tage. :((

osRetail – Primefaces 4 Upgrade

Wir sind wieder einen Schritt weiter. osRetail in der finalen Primefaces 4.0 Version. Und als Maven Projekt. osRetail das erste open Source ERP System für den Handel. Wir versuchen das starre Korsett eines fertigen ERP System aufzubrechen. Dem Kunden eine möglichst große Vielfalt an Standardfunktionalität zu bieten und auch kostspielige Funktionen wie der Katalogerstellung frei Haus mitzuliefern.

Vor ca. einem Jahr haben wir uns dazu entschlossen ein großes Refactoring der Software durchzuführen. So haben wir nicht nur die Entwicklungsumgebung von Netbeans auf Eclipse geändert. Wir haben auch IceFaces ausgetauscht und – mit dem leistungsstarken Framework – Primefaces einen weiteren Schritt zu einer moderneren Arbeitoberfläche geebnet.

jee7-standard

Ebenso wurde der Code überarbeitet. Derzeit verwenden wir den JEE7 Standard um den aktuellsten Stand der Enterprise Entwicklung von Java nutzen zu können. Autodeployments über Jenkins erleichtern uns die Arbeit erheblich da wir alle Code Commits und Änderungen auf den Testsystem schnellst möglich dem publishen können.

maven-overview-plugin

Maven unterstützt uns bei der Library Auswahl. Mit einfachsten Mitteln ist es möglich neue oder ältere Bibliotheken auszuwählen und automatisch in der Entwicklung und beim Deployment zu verwenden.

Glassfish 4 bietet uns einen schnellen Application- Server der leicht zu handeln ist. Skalierbarkeit, effizientes Arbeiten und schnelle Deployments standen dabei im Vordergrund. Durch einfache Erweiterbarkeit ist es uns möglich schnell auf Kundenwünsche zu reagieren.

Maven- Aufbau eines JEE Projekts

Automatisches Deployment ist so eine Herausforderung die man nicht einfach mal so nebenher macht. Allgemein gesehen geht es recht fix wenn man mal verstanden hat wie alles funktioniert.

Zum einen wird ein funktionsfähiges Maven Projektgruppe benötigt. Das heißt eine JEE Anwendung mit ihren Komponenten:

  • JPA
  • EJB
  • Web
  • EAR

Container. Das Ganze mit vernünftigen pom.xml Files die auch richtig funktionieren.

POM.XML für  JPA Projekt.


  4.0.0
  com.kuw.example
  ExampleJPA
  0.0.1-SNAPSHOT
  ExampleJPA
  Java Persistence for Example
  
    src
    
      
        src
        
          **/*.java
        
      
    
    
      
        maven-compiler-plugin
        3.0
        
          1.6
          1.6
        
      
    
  
  
    
		org.eclipse.persistence
		eclipselink
		2.5.0
	
  

POM.XML für EJB Projekt:


  4.0.0
  com.kuw.example
  ExampleEJB
  0.0.1-SNAPSHOT
  ejb
  
    ejbModule
    
      
        ejbModule
        
          **/*.java
        
      
    
    
      
        maven-compiler-plugin
        3.0
        
          1.6
          1.6
        
      
      
        maven-ejb-plugin
        2.3
        
          3.1
        
      
    
  
  
  	
	 	com.kuw.example
		ExampleJPA
		${project.version}
		provided
		jar
	   
	
		javax.mail
		mail
		1.4.7
	
	
		org.apache.commons
	  	commons-lang3
	  	3.1
	
	
		org.eclipse.persistence
		eclipselink
		2.5.0
	
	
		javax.ejb
		javax.ejb-api
		3.2
	
  
  QuatEJB

POM.XML für Web Projekt inkl. Primefaces


  4.0.0
  com.kuw.example
  Example
  0.0.1-SNAPSHOT
  war
  Quat
  
    src
    
      
        src
        
          **/*.java
        
      
    
    
      
        maven-compiler-plugin
        3.0
        
          1.6
          1.6
        
      
      
        maven-war-plugin
        2.3
        
          WebContent
          false
        
      
    
  
  
	  
		javax.faces
		jsf-api
		2.1
	
  	
  		org.apache.directory.studio
  		org.apache.commons.io
  		2.4
  	
  	
		commons-fileupload
		commons-fileupload
		1.3
	
	
	 	com.kuw.example
		ExampleEJB
		0.0.1-SNAPSHOT
		provided
		ejb
	
	
	 	com.kuw.example
		ExampleJPA
		0.0.1-SNAPSHOT
		provided
		jar
	
  	
		org.primefaces.extensions
		primefaces-extensions
		0.7.1
	
   
		org.primefaces.extensions
		resources-ckeditor
		0.7.1
	
	
		org.primefaces.extensions
		resources-codemirror
		0.7.1
	
		
		org.primefaces.extensions
		all-themes
		1.0.8
	
      
	    org.primefaces  
	    primefaces  
	    3.5  
	                                 
  
  
	  
	    prime-repo  
	    PrimeFaces Maven Repository  
	    http://repository.primefaces.org  
	    default  
	  
  

POM.XML für EAR.


  4.0.0
  com.kuw.example
  ExampleEAR
  0.0.1-SNAPSHOT
  ear
  
    
      
        maven-ear-plugin
        2.8
        
          EarContent
          false
          6
          lib
        
      
    
  
  ExampleEAR
  www.ka-und-we.de
  
  	
  		com.kuw.example
  		ExampleEJB
  		${project.version}
  		ejb
  	
  	
  		com.kuw.example
  		QsMPrime
  		${project.version}
  		war
  	
  	
  		com.kuw.example
  		ExampleJPA
  		${project.version}
  		war
  	
  

Primefaces 3.5 inkl. Upload im Internet Explorer 10

Für alle die Primefaces in der Version 3.5 verwenden und auch den Internet Explorer 10 nutzen gibt es leider einen kleinen Bug im Upload. Der Fehler ist aber sehr schnell zu beheben mit einem kleinen Workaround im CSS.

.fileinput-button input {
    -moz-transform : none !important;
    border : none !important;
    border-width : 0 !important;
    transform : translate(-300px, 0) scale(4) !important;
    font-size : 23px !important;
}
* + html .fileinput-button {
    line-height : none !important;
    padding : 2px 15px !important;
}

JEE Anwendung: QUAT

Es ist ein attraktives Entwicklungsumfeld im JEE Bereich. Webapplications mit EJB3 Anbindung und Managed- Beans.

Im Standard JEE6 wurde viel Aufmerksamkeit auf Annotations gelenkt und die vereinfachte Kommunikations der Beans mit dem Frontend. Der neue JEE7 Standard, erst ein paar Wochen alt wird jetzt speziell die Ausrichtung im Bereich Ajax im Blick haben. Light- Weight Communication mit dem Backend wenn man so will. Wenige Daten die geliefert werden und somit die Performance von Applikationen beschleunigt.

Ich werde euch hier ein kleines Beispiel für eine JEE Anwendung erstellen inkl. der aktuellen Version von Eclipse Kepler und Glassfish 4.

Die JEE Anwendung wird mit dem Plugin von Primefaces 3.5 laufen. Einem leistungsstarken Ajax- Framework das basierend auf jQuery UI viel interaktive Bearbeitungsmöglichkeiten bietet.

Nachteil von Primefaces. Die jQuery UI hat, meines erachtens nicht gerade ein business orientiertes Interfaces Design. Die Buttons und Eingabemasken wirken sehr groß und für ein schlankeres Aussehen müssen einige CSS Classes überarbeitet werden.

Auch muss man sich vor Augen führen das durch den zusätzlichen CSS und Javascript Aufwand die einzelnen Seiten etwas Content- lastiger werden und somit die Ladezeit im Gegensatz zu reinem JSF2 länger sein können. Da man aber sehr viele Daten nachladen kann wird nur der Erstaufruf etwas länger benötigen. Sobald alle Daten Clientseitig gecached wurden wird die Performance deutlich besser sein.

Maven wird in diesem kleinen Projekt eine weiter Rolle spielen. Um möglichst einfach alle Komponenten bauen zu lassen ohne sich um die Libraries kümmern zu müssen oder die Libraries im SVN bereit zu stellen werde ich mich darum kümmern das das Projekt mit Maven gebaut werden kann.

Vorteile:

  • Versionierung des Projektes anhand von Maven- einstellungen.
  • Einfaches Updaten von Libraries
  • Schnelles Bauen von Projekten

Nachteil:

Langwieriges einstellen der Maven Poms um einen erfolgreichen Build zu generieren. Mittlerweile habe ich auch festgestellt das nicht alle POM Einstellungen Plattformunabhängig sind. Es kann sein das Builds teilweise unter Windows laufen und auf dem Mac Fehler verursachen weil Abhängigkeiten fehlen.

Projektname: QUAT

Das Projekt das ich seit längerem realisiere nennt sich QUAT. Mittlerweile stecken knappe 2 Jahre Entwicklung in dem System. Angefangen hat es mit einer einfachen PHP Anwendung die mittlerweile ihre Alter erreicht hat und dank unzähliger PHP Updates auch einiges an Funktionen nicht mehr unterstützen bzw. nur noch per Workaround laufen.

QUAT wird z.B. für ein Callcenter verwendet werden können das sich mit der Qualitätssicherung von Mitarbeiter beschäftigt. Überall wo die Leistung vom Mitarbeiter eine Bewertung benötigt und die Qualität in Gesprächen oder direkter Kommunikation am Telefon geprüft werden muss um den Erfolg der Firma zu steigern oder gezielt Schulungen für Mitarbeiter anzubieten.

Aber erstmal genug um den Nutzen der Software. Wir möchten uns die technische Seite etwas genauer ansehen und somit den Aufbau der Software.

[HIER WERDEN ALLE ZUKÜNFTIGEN ARTIKEL ZU QUAT GELISTET UND VERLINKT|

 

So ein schmerzhafter Rücken ist nicht schön

Jaaaaaaa… ich weiß. Die Weicheier wieder, Männer. Wenn Männer Leidenschaft und Feuer haben dann beim Jammern. Aber zu Recht. So ein Bandscheibenvorfall ist kein Spaß. Es gibt auch tausende vor mir die sowas schon hatten sogar jüngere und viele, viele nicht sogar unzählige ältere. Leider nervt es mich nur noch. Daher bekommen meine Blogleser etwas Frust ab.

Ich finde es halb so dramatisch wenn man sich mal was bricht. Da ist der Ärger auch groß aber man kann abschätzen das nach ca. 6 Wochen der Schmerz vorüber ist und die Knochen wieder einen guten Zustand haben. Beim Bandscheibenvorfall kommt es mir momentan so vor als wäre es ein Rätselraten von Arzt zu Arzt. Nicht das ich was gegen Ärzte hätte… Neeeeiiin. Ich liebe es Stunden in überfüllten Wartezimmern zu sitzen und die Bakterien anderer wirklich kranker Menschen einzuschnaufen. Denn wenn ein Fenster geöffnet werden würde die ersten > 80 Patienten vom Stuhl knallen. Frischluft oder Kälteschock. Wer weiß. Das Phänomen tritt aber auf, egal ob Sommer oder Winter. Daher gehe ich von ersterem aus. Ja, auch ich werde mal alt. Vorgenommen sind die 120 zu erreichen. Bis dahin sollten Austauschorgane doch kein Problem mehr darstellen. 😉

Aber zurück zum Thema. Was mache ich mit so einem doofen Bandscheibenvorfall.Doof ist der der ihn bekommt werden jetzt ein paar böse Zungen sagen aber laut meinem tollen Orthopäden ist es ein Zufallsereignis. Ach wie toll.

22.05.2013 Kaum zu glauben. Aber …

meine erste Krankengymnastik war super. Die Massagen sind toll und die Wirbelsäule wird dabei wunderbar entspannt. Abgesehen von der Entspannung konnte ich jetzt seit Wochen das erste mal wieder ruhig sitzen ohne jede 5 Minuten hin und her zu rutschen. Das schlimme daran war nur das ich vom Vorfall bis hin zur Krankengymnastik das ganze sich über einen Monat gezogen hat. Wenn ich noch den Schritt zum Neurologen gemacht hätte würde ich immer noch keine Prävention bekommen stattdessen immer noch alle 5 Minuten die Position des Gesäß ändern.

Mehr demnächst …

ManagedBean URL Parameter lesen

Vor kurzem musste ich mich fragen wie man ein paar einfache URL Parameter ausgelesen bekommt. Das ganze in der ManagedBean. Eigentlich ist die Lösung einfach wenn man einmal begriffen hat wozu ManagedProperties gedacht sind. Das schöne ist das es über eine einfach Annotation geht und in der faces-config.xml nur eine Kleinigkeit hinzugefügt werden muss.

In unserem fall ist es z.B. /faces/test/test.xhtml?test1=hurz&test2=gurz

 


    bean
    com.example.Bean
    request
    
        test1
        #{param.test1}
    
    
        test2
        #{param.test2}
    

Wichtig hierbei ist die Scope. Falls ihr die Scope auf Session belasst werdet ihr ein Instanziierungsproblem bekommen. Da der URL Aufruf wie der Name schon sagt ein einfacher und nur für den Moment geltender Aufruf ist ist der Scope ganz wichtig bei der Sache das auch die Parameter korrekt gelesen werden können. Somit achtet darauf das die Scope auf alle Fälle REQUEST enthält.

Anschließend könnt ihr in eurer ManagedProperty die zwei Parameter auslesen:

@ManagedProperty ("{test1}")
private String test1;
@ManagedProperty ("{test2}")
private String test2;

public void setTest1(String test1) {
 this.test1 = test1;
}
public void setTest2(String test2) {
 this.test2 = test2;
}

Nischenprodukt Phablet, Trendprodukt Tablet

Phablets

Der Trend zum Mix aus Tablet und Smarphone ist angelaufen. Ich gehe davon aus das es ein Nischenprodukt wird wenn es nicht bald die passenden Gadget dazu gibt. Zum einen ist ein Phablet nicht nur störend im Transport so ist es auch wirklich umständlich damit zu telefonieren. Oder sollte ich sagen, noch zu telefonieren?

Bei Apple wird auf eine Smartwatch getippt die ein Kommunikationsgadget zwischen Smartphone und Uhr sein soll. Ein Informationstool um nicht alle 10Minuten in seiner Hosentasche zu wühlen oder die Handtasche nach dem Smartphone zu durchforsten.

Auch andere Startups die auf Kickstarter finanziert wurden sind mittlerweile in Serienproduktion gegangen. z.b. Projekt Pebble. Eine Smartwatch die als Allround Gadget angeboten wird. Sie ist wasser- und kratzfest und wird per Bluetooth ans Smartphone gekoppelt.

Mit einer Smartwatch am Handgelenk und der Kombination zum Phablet wäre es ganz interessant ein leistungsstarkes Smartphone mit großem und hochauflösendem Display in  der Tasche zu tragen. Somit hätte ich nur ein Gerät am Mann zum lesen und kommunizieren und ein, nicht störendes Gadget am Handgelenk das die meisten ohnehin in analoger Form tragen.

Fazit meinerseits. Phablet, kann ein tolles Produkt werden und seine Nische finden wenn man die passenden Gadget dazu entwickelt und das Produkt nicht alleine sterben lässt. Ich würde dem ganzen noch 1-2 Generationen Zeit lassen bis passende Komponenten dafür entwickelt wurden und auch die Technik der 5-7 Zoll Geräte ausgereifter ist. Was bei mir zum größten Teil vor allem mit Akkulaufzeit und Gesamtgewicht zu tun hat.

 

Tablets

werden mehr und mehr zum Massenprodukt. Immer mehr löst das schlanke, meistens langlaufende Gerät den heimischen Desktop oder sogar schon das Notebook ab. Spielekonsolen werden immer nebensächlicher zugunsten der Gelegenheitsspiele die man auch auf dem Tablet tätigen kann und auch als Secondscreengerät wird das Tablet immer interessanter.

Social Communities scheren derzeit Unmengen Nutzer um sich. Egal ob es um Bewertungen von TV Shows geht oder um ChekIns zu Fernsehprogrammen. Kleine Apps wie waydoo oder getglue die ein Secondscreen Erlebnis Realtime publizieren. Egal zu welchem Ereignis oder welcher Sendung kann ich meine Meinung auf Waydoo kundtun und mit den Mitgliedern der Community kommunizieren. Das ganze zumeist Realtime auf der Couch während die Sendung läuft.

Der klassische Reader für Ebooks mit EInk Oberfläche wird sich zwar halten aber immer mehr Nutzer laden sich parallel auch auf ihr Tablet die Amazon App um ihre Bücher unterwegs zu genießen. Oder im Dunklen 😉

Nachrichten, Kochen, Suchen, Shoppen und vieles mehr ist doch einfach schöner auf dem Tablet zu erledigen als am heimischen Notebook. Ich bin schneller, benötige weniger Platz fürs Gerät und kann das Tablet in der Kochnische noch zwischen den Zutaten platzieren ohne das ich lästigen Papiermüll produziere. Ist das nicht toll? … Ich denke schon und ich denke auch das es immer mehr geben wird die über die neuen Generationen der Tablets mit ankoppelbarer Tastatur und Co. nutzen werden als Multimediaplattform und das alte Notebook im Schrank verstauen werden.

Fazit. Nicht mal mehr eine Generation und die Tablets erfüllen endlich einen Zweck. Mit vernünftigen Apps können sie sowohl Multimediaspielzeug als auch Arbeitsmittel sein. Nicht nur für den alltäglichen nebensächlichen Mist den man fabriziert sondern auch für den Studenten der Informationen in der Cloud teilt oder dem externen Mitarbeiter der auf Kundenbesuche ist und ein Gerät benötigt mit mehr als nur 2h Akkulaufzeit um sich Präsentationen oder Arbeitsmaterial zu durchschauen und sich somit auf diverse Termine vorbereiten kann.

Liferay Soap Service 6.1.0 – JournalArticle

Es ist doch ein Graus. Seit nunmehr zweit Tagen habe ich Ursachenforschung betrieben. Warum zum Teufel funktioniert das Sichern von JournalArticles nicht. Langsam bin ich der Versuchung nahe zuerst die Liferay Issues zu durchforsten bevor ich Fehler im eigenen Quellcode suche. Dabei war es doch so einfach. Wenn man einen vernünftigen Fehler zurück bekommen würde.

Jeder der schon mal LiferayServices angezapft hat wird auch die ein oder andere weiße an seine oder liferay’s Grenzen stoßen. Ich stieß bei den JournalArticle an eine liferay Grenze. Stetige Erweiterungen und neue Funktionen in liferay führen leider auch dazu das ab und zu ein paar Sachen vergessen werden. So auch die SOAP Services und deren Funktionalität. Zugegeben ist es schon ein spezieller Fall den ich da anspreche. Es solle aber dennoch ein Artikel wert sein diesen Fehler zu dokumentieren.

Es handelt sich hierbei um folgenden Fehler der entgegenzunehmenden Schnittstelle und betrifft folgendes Versionen

  • 6.1.0 CE GA1
  • 6.1.10 EE GA1
  • 6.2.0 CE M2
15:04:40,009 ERROR [JournalArticleServiceSoap:110] java.lang.NullPointerException
java.lang.NullPointerException
	at com.liferay.portlet.journal.util.JournalUtil.getUrlTitle(JournalUtil.java:807)
	at com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.getUniqueUrlTitle(JournalArticleLocalServiceImpl.java:2993)
	at com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.addArticle(JournalArticleLocalServiceImpl.java:231)
	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.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:112)
	at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71)
	at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:108)
	at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:211)
	at $Proxy206.addArticle(Unknown Source)
	at com.liferay.portlet.journal.service.impl.JournalArticleServiceImpl.addArticle(JournalArticleServiceImpl.java:92)
	at sun.reflect.GeneratedMethodAccessor277.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:112)
	at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71)
	at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:108)
	at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:211)
	at $Proxy207.addArticle(Unknown Source)
	at com.liferay.portlet.journal.service.JournalArticleServiceUtil.addArticle(JournalArticleServiceUtil.java:90)
	at com.liferay.portlet.journal.service.http.JournalArticleServiceSoap.addArticle(JournalArticleServiceSoap.java:96)
	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 org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
	at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
	at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
	at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
	at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
	at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
	at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
	at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
	at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
	at com.liferay.util.axis.AxisServlet.service(AxisServlet.java:122)
	at com.liferay.portal.servlet.AxisServlet.service(AxisServlet.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:289)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:83)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:80)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:216)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:71)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

Für alle die es noch nicht wissen. Der Bugfix ist durchgeführt worden. Und der Fehler sollte sich erledigt haben. Hierzu benötigt ihr aber mindestens eine der folgenden Versionen:

  • 6.1.20 EE GA2, –Sprint 11/12,
  • 6.2.0 CE M2

HTC One – Meine Meinung

HTC One – Technische Daten

HTC bietet eine neue Generation Handy auf. Vor allen anderen Herstellern will es einen Fullmetal Body auf den Markt schmeißen. Schon mal nicht verkehrt. Auch das Display soll dank kräftigen Unterstützern in der Filmproduktion ein besseres Bild liefern und vor allem Fotos mit der neuen Mega… ach nein HTC UltraPixel Kamera.

An sich finde ich das Gerät richtig hübsch und auch schöner als Geräte von Samsung und Co. Aber es gibt wieder massive Kritikpunkte die mich stören. Der Akku. Ich finde es schade das es HTC nicht schafft einen vernünftigen Akku im System unterzubringen und sich, wenn ich dazu komme und es testen kann evtl. einen Kunden verspielt. Im Liveticker den ich gerade auf TechStage verfolgt habe wurde das auch sehr häufig erwähnt das die Akkulaufzeiten von HTC Geräten nicht gerade die Besten sind. Das spiegelt auch meine Wahrnehmung dar. Somit ist für mich ein massives Entscheidungskriterium die Akkulaufzeit, denn ich benötige auf keinen Fall ein Gerät das ich alle 8h – 10h – so wie mein One x bisher – wieder ans Netz hängen darf.

Das andere sind die Updatezyklen des Geräteherstellers. Da es von Grund auf schon nicht möglich ist ein Pure Android zu bekommen muss man sich mit der Sense Oberfläche zufrieden geben. Zugegeben, ich finde sie ansprechend und gut gemacht aber leider sind die Zyklen für Android Updates teilweise sehr nach hinten versetzt. So bekommt man, falls man Glück hat das Update für ein Gerät das gerade mal ein Jahr alt ist noch und wenn man Pech hat und sich leider einer günstigeren Modellreihe entschieden hat eben kein Update. Ist mir mittlerweile schon mit dem Desire und Desire HD passiert das leider die Update nicht geliefert wurden obwohl sie im Plan von HTC standen aber laut technischer Schwierigkeiten entfernt wurden. hm… Big Fail, sorry das sind Kriterien die man sich nicht mehr leisten sollte. Nicht umsonst hat man Absatzprobleme.

Alles in allem soll das neue Spitzenmodell etwas über 600€ kosten. Was ein ganz schöner Batzen ist. Wenn Google im März seine neue Wunderwaffe ankündigt bin ich sehr gespannt wie entweder der Preis des Gerätes in den Keller geht oder die Stückzahlen die erwartet werden einfach nicht verkauft werden.

Mein Fazit, Sorry HTC aber wirklich innovativ ist es nicht. Ich habe bisher wirklich viele Smartphones genutzt und dafür Software entwickelt. Bin am Ende auch bei HTC geblieben weil beim Samsung Kies benötigt wurde und das für Mac nicht verfügbar war, Motorola keine Innovation mehr hatte und Huawai bis dato noch nicht auf meinem Radar stand. Jetzt dreht sich das Rad ein ganzes Stück weiter und viel Neues wird von Google erwartet. Ich werde mich auf jeden Fall weiter am Markt umsehen und bis Juni warten. Denn Gründe ein HTC One zu kaufen liefert mir HTC einfach nicht außreichend.

Bildet euch eure eigene Meinung. Hier noch das Bewertungsvideo von TechStage: