Tomcat neu erzeugtes PNG anzeigen JFreeChart

Hey

Ich habe folgendes Problem:

Ich habe eine JSF-Webapplikation erzeugt. Diese soll auch Charts generieren können.

Die Charts werden mit JFreeChart als PNG erstellt und in einen Ordner in der Applikation namens temp gespeichert.

Das erstellen funktioniert wunderbar. Nur der zugriff ist etwas, ich nenns ma, verbugt.

Das PNG wird erzeugt aber Tomcat findet es nicht obwohl der Pfad stimmt (sysout ausgeben lassen). Wenn ich nun den Tomcat neustarte findet dieser die Bilder ohne Probleme… unc ich weis leider nicht wieso…

Hier die relevanten Klassen:

Hier mein Bean

ChartBean.java:

package demo;

import org.jfree.chart.plot.PlotOrientation;

import chart.Create3DChart;
import chart.CreateBarChart;
import chart.CreateLineChart;

public class ChartBean {

private String myUrl;
//private String = null;

public String getMyUrl() {
//if (_url2 != null){
System.out.println(myUrl);
/*try {
Thread.sleep(5000);
} catch (InterruptedException e){
}*/
//_url = „/temp/Urbantrack57225.png“;
//System.out.println("/images/Urbantrack61470.png");

//return myUrl;
return myUrl;
//String test = _url2;
//return „/temp/Urbantrack39919.png“;
//}
//else{
// System.out.println("/images/Chart Demo Urbantrack.png");
//return „/images/Chart Demo Urbantrack.png“;
//}
}

public void setMyUrl(String url) {
myUrl =url;
}

public String createBarChart(){

CreateBarChart createBarChar = new CreateBarChart(
„Comarison of Total Life Cycle Costs over periode“, // Titel
„System“,
„€ Costs“,
„Systems“,
PlotOrientation.VERTICAL);
myUrl = createBarChar.getFileName();

return „ok“;
}

public String createBarChartHorizontal(){

CreateBarChart createBarChar = new CreateBarChart(
„Total cost Lcc over period under considerationcostdriver analysis activities“,
„Component“,
„Components“, // Beschriftung Y Achse
„€“,
PlotOrientation.HORIZONTAL);
myUrl = createBarChar.getFileName();
return „ok“;
}

public String createLineChart(){

CreateLineChart createLineChart = new CreateLineChart();
myUrl = createLineChart.getFileName();
return „ok“;
}

public String create3DBarChart(){

Create3DChart barChartArea = new Create3DChart();
myUrl = barChartArea.getFileName();
return „ok“;
}
}

CreateBarChart.java

package chart;

import java.awt.Color;
import java.awt.Paint;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DatasetUtilities;

public class CreateBarChart extends CreateChart {

private String _sChartTitle = „Chart Titel“;
private String _sDescCategory = „Description Category“; // Description CategoryAxis
private String _sDescValueAxis = „Description ValueAxis“; // Description Value Axis
private PlotOrientation _plotOrientation = PlotOrientation.VERTICAL;
private String _sCategory = „Category“;

public CreateBarChart(String sChartTitle,String sCategory, String sDescriptionCategory,
String sDescriptionValueAxis, PlotOrientation plotOrientation){

_sChartTitle = sChartTitle;
_sCategory = sCategory;
_sDescCategory = sDescriptionCategory;
_sDescValueAxis = sDescriptionValueAxis;
_plotOrientation = plotOrientation;
_dataset = createDataset();
_chart = createChart(_dataset);

}

public CreateBarChart(){

_dataset = createDataset();
_chart = createChart(_dataset);

}

protected CategoryDataset createDataset() {

// Category Dataset
DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, „1“, „0“);
dataset.addValue(100, „1“, „1“);
dataset.addValue(100, „1“, „2“);
dataset.addValue(100, „1“, „3“);
dataset.addValue(300, „1“, „4“);

final double[][] data = new double[][]

{{10.0, 9.0, 7.0, 7.0},
//{5.0, 7.0, 14.0, 3.0},
//{6.0, 17.0, -12.0, 7.0},
//{9.0, 8.0, 0.0, 6.0},
};

return DatasetUtilities.createCategoryDataset(„test“,_sCategory , data);

}

private JFreeChart createChart(final CategoryDataset dataset) {

final JFreeChart chart = ChartFactory.createBarChart(
_sChartTitle, // chart title
_sDescCategory, // domain axis label
_sDescValueAxis, // range axis label
dataset, // data
PlotOrientation.VERTICAL, // Default
false, // include legend
true, // tooltips
false // urls
);

//BarRenderer renderer = new BarRenderer();
BarRenderer renderer = new CustomRenderer(new Paint[] {Color.PINK, Color.blue, Color.green,
Color.yellow, Color.orange, Color.cyan,
Color.magenta, Color.blue});

if (_plotOrientation.equals(PlotOrientation.VERTICAL)){
chart.getCategoryPlot().setOrientation(PlotOrientation.VERTICAL);
}else if (_plotOrientation.equals(PlotOrientation.HORIZONTAL)){
chart.getCategoryPlot().setOrientation(PlotOrientation.HORIZONTAL);
}else {
System.out.println(„CreateBarChart: Keine Orientierung“);
}

chart.getCategoryPlot().setRenderer(renderer);

//JFreeChart chart = new JFreeChart(_sChartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, false);
chart.setBackgroundPaint(Color.lightGray);
return chart;

}

public void setBarInformation( String sChartTitle, String sDescriptionCategory,
String sDescriptionValueAxis, PlotOrientation plotOrientation){

_sChartTitle = sChartTitle;
_sDescCategory = sDescriptionCategory;
_sDescValueAxis = sDescriptionValueAxis;
_plotOrientation = plotOrientation;

}

}

und die JSP datei chart.jsp:

My JSF ‚chart.jsp‘ starting page

Hier der ausschnitt aus der faces-config wo das Bean deklariert wird:

myChartdemo.ChartBeansession

Hoffe ihr kennt ein solches Problem und wisst wie mir zu helfen ist…
Falls noch wichtige Dateien / Ausschnitte fehlen sollten, einfach sagen ich poste diese gerne für euch

Vielen Dank schonmal im voraus :smile:

liebe Grüße

DE

gelöst
War ein „Sicherheitsproblem“ man muss in der context.xml den Parameter antiRecourceLocking auf false setzen dann gehts

Grüße

DE