Java

tomcat frontend Apache, squid, vagy varnish?

Fórumok

Tomcatnek tapasztalataim szerint mindenképpen kell frontend, másképpen a lassabb kapcsolatú kliensek miatt kifekszik.

VPS-en van Tomcatem. Így a memória is kritikus.
Jelenleg squid van előtte. Ezzel cachelem is a válaszokat.
Ennek a memóriahasználata kb. 20-24MByte.
Mivel itt kevés a memória (360MB + 256MB swap), és van még postgres is a Tomcaten kívül, (ez 24M shared buffersre van állítva), így az Apache kérdéses.
Bár Apache-nál is van cache lehetőség + az AJP connector gyorsabb lehet mint a squid http connectorral. Viszont az Apache mem használat konnekciónként 2M, így ha a squid mem. használatát szeretném tartani, egy időben max. 6 konnekció. Ez így elég kevés.

Kérdésem: Varnish + Tomcat-el kapcsolatban van-e valakinek tapasztalata?
Bár lehet, hogy az én esetemben nem is lenne értelme, úgy lövöm be a szervereket, hogy ne swappeljen, hanem úgy állítok be mindent, hogy elég legyen a memória, így nem jönnek elő a Varnish előnyei, lehet, hogy még lassabb is lenne, mivel a kernelre hárítja a cachelést, így lehet, hogy összeveszne pl. a postgresql-el a cache-n.

Vagy ki mit használ Tomcat elé? :)

java T3D

Fórumok

A turistautak.hu-ról letölthető egy T3D nevű javaban írt progi, ami elvileg a térképek 3D megjelenítésére alkalmas. (http://turistautak.hu/maps/3d/)
java -Djava.library.path="dll" -XX:MaxDirectMemorySize=512M -Xmx256M -jar "t3d.jar" panarccsal próbáltam indítani jre1.6.0_07 környezetben, de csak egy üres képernyőt dob. Mi lehet a gond?
Ja, az exe miatt wine-vel telepítettem.

JInternalFrame megszüntetése

Fórumok

Egy JFrame típusú objektumban akarok egy (csak egy!) JInternalFrame objektumot nyitni. Betettem egy objektum számlálót az osztályba. Ezt az objektum létrehozásakor növelem eggyel és megszüntetésekor csökkentem.

A gond az, hogy a finalize() függvény nem fut le az InternalFrame bezárásakor. Mit kell beállítanom, hogy a finalize() lefusson?


import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MyInternalFrame extends JInternalFrame {

    static int openFrameCount = 0;

    public MyInternalFrame() {
        super("Document #" + (++openFrameCount), 
              true, //resizable
              true, //closable
              true, //maximizable
              true);//iconifiable
        setSize(300,300);
    }
    
    @Override
    protected void finalize() throws Throwable
    {
        --openFrameCount;
        System.out.println("finalize() lefutott!");
        super.finalize(); 
    }
    
} // end of class

Adatbázis kezelés Java-val?

Fórumok

Sziasztok!

Szeretnék jobban elmélyedni az adatbázisok témakörben. Jó lenne valamilyen megoldás, ami MySQL, Oracle stb független. Lehetőleg csak Java kelljen hozzá.
Kellene valami szakirodalom is hozzá, hogy megtanulhassam a trükköket. Esetleg valami jó kis tutoriál.

Előre is kösz a tanácsokat!

RCP Action gond

Fórumok

Sziasztok!

Létrehoztam egy RCP alkalmazást, megírtam egy adatmodellt, valamint GEF-fel elkészítettem egy grafikus szerkesztőt is.

A menüben akarok egy olyan action elhelyezni, hogy az Action lefutásakor egy üres editort helyezzen az aktuális oldalon.
A kód:

public void run() {
Graph g = new Graph();
try {
IWorkbenchPage page = window.getActivePage();
IEditorInput input = new GraphEditorInput(g);
page.showView("com.sgraph.ui.view");
page.openEditor(input, "org.jbpm.graph.ui.editor",true);

} catch (PartInitException e) {
e.printStackTrace();
}
}

A problémám az az, hogy semmi nem történik (Exception sincs). Viszont ha a Graph g=new Graph sort kikommentezem, akkor a view megjelenik a Workbench aktuális lapján.

Van valami ötletetek, ez miért lehet?

String.intern() és ==

Fórumok

Hali!

Meg tudná valaki magyarázni, hogy miért ajánlják mindenhol a == használatát az intern-ált (lol) Stringek megemlítésekor?

Értem, hogy gyorsabb, mert referenciát hasonlít össze, és nem karakterről-karakterre két sztringet, de nem ugyanúgy if (this==s) return true; -val kezdődik a String-ben az equals(String s)?

üdv,

További interface kérdés

Fórumok

Sziasztok!

Nemrégiben dobtam fel egy olyan témát, ami az interfészekkel foglalkozott, de most tovább kell kérdeznem, mert a JAZZY nevű helyesírás ellenőrző program értelmezése során újra csak előbukkant egy ilyen probléma:

A SpellChecker osztályban található a isCorrect() függvény, ami egy szóról eldönti, hogy helyesen van leírva vagy sem. Ez így néz ki:


  public boolean isCorrect(String word) {
    if (userdictionary.isCorrect(word)) return true;
    for (Enumeration e = dictionaries.elements(); e.hasMoreElements();) {
      SpellDictionary dictionary = (SpellDictionary) e.nextElement();
      if (dictionary.isCorrect(word)) return true;
    }
    return false;
  }

Ahol a userdictionary a SpellChecker egy adattagja és így van deklarálva:


  private SpellDictionary userdictionary;

A SpellDictionary pedig egy interface, ami így néz ki:


import java.util.*;

public interface SpellDictionary {
  public void addWord(String word);
  public boolean isCorrect(String word);
  public List getSuggestions(String sourceWord, int scoreThreshold);
  public List getSuggestions(String sourceWord, int scoreThreshold , int[][] matrix);
}

Kérdés: Hogyan működhet ez, hiszen az interface-ben nincs kód, csak függvénydeklarációk. Mi fut le, amikor ezt írják:


    if (userdictionary.isCorrect(word)) return true;