# Target Unreachable bei @Named CDI



## Mr.y (1. Sep 2013)

Hallo zusammen,

irgendwo habe ich zwar ein ähnliches Topic gesehen, wo auch die Lösung präsentiert wird.
Diese habe ich ausprobiert aber es hilft nicht 

Und zwar arbeite ich mit CDI und benutze @Named("store")

Die Querverweise anhand "store.metheode" funktionieren.
Die Lösung soll für dieses Problem sein, dass man die beans.xml, die auch leer sein kann in den   
WEB-INF Ordner packt.

Der Fehler wird schon beim setzen von Variablen geworfen.

Ich hatte bereits in der beans.xml folgenden Inhalt.

<?xml version="1.0" encoding="UTF-8"?>

oder einfach mal gar nix. Leider bringt das nichts 

Meine Pom.xml sieht so aus:

[XML]<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>de.blr.store</groupId>
	<artifactId>store</artifactId>
	<packaging>war</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>store Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>

		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-api</artifactId>
			<version>2.1.7</version>
		</dependency>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-impl</artifactId>
			<version>2.1.7</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
		</dependency>
		<!-- Tomcat 6 need this -->
		<dependency>
			<groupId>org.glassfish.web</groupId>
			<artifactId>el-impl</artifactId>
			<version>2.2</version>
		</dependency>


		<dependency>
			<groupId>javax.ejb</groupId>
			<artifactId>ejb-api</artifactId>
			<version>3.0</version>
		</dependency>


		<dependency>
			<groupId>org.hibernate.javax.persistence</groupId>
			<artifactId>hibernate-jpa-2.0-api</artifactId>
			<version>1.0.1.Final</version>
		</dependency>

		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>

	</dependencies>

	<build>
		<finalName>JavaServerFaces</finalName>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.1</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
		</plugins>

	</build>


	<repositories>
		<repository>
			<id>appfuse-releases</id>
			<name>AppFuse Releases</name>
			<url>https://oss.sonatype.org/content/repositories/appfuse-releases</url>
		</repository>
	</repositories>


</project>
[/XML]

Meine web.xml sieht so aus:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Archetype Created Web Application</display-name>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>content.xhtml</welcome-file>
  </welcome-file-list>
  <context-param>
    <description>Development or Production</description>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
</web-app>[/XML]

An sich gibt es keine Fehler, wo Maven oder sonst wer mich drauf aufmerksam macht.

Vielen Dank für die Tipps.


----------



## tandraschko (22. Sep 2013)

Benutzt du Tomcat? Ich seh keine CDI Implementations als dependency.


----------



## Mr.y (22. Sep 2013)

hi  ja ich benutze Tomcat,
wobei ich jetzt so viel mit der pom gemacht habe, dass ich da nen artifact-error habe

meine Pom.xml aktuell:



> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <groupId>de.blr.store</groupId>
> ...



und wenn ich "install" ausführe hab ich:



> C:\Users\Mr\workspace\Store\store>mvn install -e
> [INFO] Error stacktraces are turned on.
> [INFO] Scanning for projects...
> [ERROR] The build could not read 1 project -> [Help 1]
> ...



Hat jemand eine valide pom, mit jsf 2.0, cdi, entity-manager???

Danke im Voraus


----------



## tandraschko (22. Sep 2013)

Du hast jetzt zwar die CDI API eingebunden aber keine Impl. Das kann so eh nicht gehen.
Du musst noch OpenWebBeans oder Weld einbinden.
Das einfachste wäre jedoch einen JavaEE server zu benutzen - TomEE oder Glassfish oder so.

Dein Fehler ist übrigends klar. Was soll das sein: ${com.sun.faces.version}?
Du brauchst eine richtige Version oder du definierst die Version als Property via:

<properties>
    <com.sun.faces.version>2.1.24</com.sun.faces.version>
</properties>

Ich werde dir leider kein Beispiel zusammen stellen, ich denke mit ein bisschen Fleiß bekommt man das leicht hin


----------



## soccer (22. Sep 2013)

hallo liebe leute!
könnte mir bitte jemand weiterhelfen? ich programmiere eine zapfenrechner und komme nicht weiter. bitte um vervollständigung.
danke im vorraus.

public class turm {


	private static double anzahlStart;
	private static int anzahl;


	public static void main(String[] args) {

		anzahlStart = Double.parseDouble(args[0]);
		anzahl = Integer.parseInt(args[1]);

		berechnung(anzahlStart, anzahl);


	}


	private static void berechnung(double anzahlStart2, int anzahl2) 
	{
		double anzahlAktuell = anzahlStart;
		for(int i = 2; i <= anzahlAktuell; i++)
		{
			double anzahlAlt = anzahlAktuell;
			anzahlAktuell *= 1;
			System.out.printf("%f * %d = %f %n ", anzahlAlt, i, anzahlAktuell);
		}
		for(int j = 2; j <= anzahlAktuell; j++)
		{
			double anzahlAlt = anzahlAktuell;
			anzahlAktuell /= 1;
			System.out.printf("%f / %d = %f %n", anzahlAlt, j, anzahlAktuell);
		}

		if(anzahlStart != anzahlAktuell)
		{
			System.out.printf("%f %d", anzahlStart, anzahlAktuell);
		}

	}

}


----------



## Mr.y (22. Sep 2013)

@An den Vorposter....
Bitte eigenen Thread eröffnen.

Zu dem eigentlichen Thema:

Ich habe nun meine pom.xml schlanker gemacht.
Und ich habe den Glassfish 3.0 installiert und in die Eclipse Juno intergriert.

Nun fehlen mir natürlich die ganzen Persistence-artifacts und javax.* Sachen für CDI.

meine pom.xml:



> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <groupId>de.blr.store</groupId>
> ...



Fehlermeldungen:


> Description	Resource	Path	Location	Type
> GenerationType cannot be resolved to a variable	Customer.java	/store/src/main/java/de/blr/model	line 11	Java Problem
> Column cannot be resolved to a type	Customer.java	/store/src/main/java/de/blr/model	line 13	Java Problem
> Column cannot be resolved to a type	Customer.java	/store/src/main/java/de/blr/model	line 15	Java Problem
> ...




Was muss ich noch in die pom.xml eintragen, damit das ganze auf dem Glashfisch deployen lässt??
Danke im Voraus


----------



## tandraschko (23. Sep 2013)

Installier doch gleich 4.0 anstatt so nen alten zu installieren.
Wenn du Glassfish benutzt, kannst du ALLE dependencies raushauen und die JavaEE API hinzufügen:

[XML]
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>
[/XML]


----------



## Mr.y (24. Sep 2013)

vielen dank, hab jetzt alles so gemacht und die klassen werden auch kompiliert.
Leider bin ich beim ähnlichen Problem angelangt:

Exception attempting to inject Remote ejb-ref name=de.blr.presentation.ServicePM/storeService,Remote 3.x interface =de.blr.business.StoreService,ejb-link=null,lookup=null,mappedName=,jndi-name=de.blr.business.StoreService,refType=Session into class de.blr.presentation.ServicePM

Soweit ich das verstehe, funktioniert die Injection des Objekts von  de.blr.business.StoreService
in die nächst höhere (View) Schicht:
de.blr.presentation.ServicePM

weil:


> Exception attempting to inject Remote ejb-ref name=de.blr.presentation.ServicePM/storeService,Remote 3.x interface



Er braucht wohl ejb-link oder lookup oder mappedName oder jndi-name....
falls ja....wie definiere ich das??? 

So habe ich das in der View impelementiert:


```
@Named
@SessionScoped

public class ServicePM implements Serializable {

	@EJB
	private StoreService storeService;
```

Danke für jeden Tipp.


----------

