# [Sun AppServer 8.1] Fehler beim deployen



## Krabat (20. Sep 2005)

Hallo,

es handelt sich hier um einen WebService, den ich mit dem Sun J2EE Tutorial erstellt habe. Ich habe nur wenig von dem Tutorial Stoff verändert, bekomme stets eine EJB Exception beim deployen. Weiß da jemand Rat?


Die Fehlermeldung aus dem AppServer Log:
*[#|2005-09-20T14:48:17.014+0200|INFO|sun-appserver-pe8.1_02|javax.enterprise.system.stream.out|_ThreadID=11;|Fehler: java.lang.IllegalStateException: Endpoint HelloIF has not been assigned an endpoint address  and is associated with servlet HelloImpl , which has 0 url patterns|#]*


Die deploytool Fehlermeldung:

```
----------------------------------------------------------------------
distribute: C:\Dokumente und Einstellungen\kraft\projects\ws_test\bin\krb_test.war
deployment started : 0%
Deploying application in domain  failed; Error while running ejbc -- Fatal Error from EJB Compiler -- jaxrpc compilation exception
; requested operation cannot be completed

!!! Operation Failed !!!
!!! With The Following Failure Messages !!!
Deploying application in domain  failed; Error while running ejbc -- Fatal Error from EJB Compiler -- jaxrpc compilation exception
; requested operation cannot be completed
Error while running ejbc -- Fatal Error from EJB Compiler -- jaxrpc compilation exception


**********************************************************************
[Completed (time=6.1sec, status=13)]
**********************************************************************
```


Meine Einstellungen im Deploytool sind wie folgt:





















[edit: Mehr Infos]


----------



## Bleiglanz (20. Sep 2005)

lass es doch erstmal durch den Verifier laufen (oben bei den Tools), das gibt normalerweise eine bessere Fehlermeldung


----------



## Krabat (20. Sep 2005)

Habe den Fehler nun weiter einkreisen können, danke :

*Assertion:The url-pattern of the servlet-mapping must be an exact match pattern (i.e. it must not contain an asterisk (*)). Please refer to JSR 109 Section #7.1.2 for further information.* 

Habe dann festgestellt, daß es sich bei JSR um Java Specification Requests (link) handelt, werde aber nicht so recht schlau daraus...
hmm... servlet-mapping... wo ist das festgelegt?


----------



## Bleiglanz (20. Sep 2005)

in der web.xml von deinem .war Archiv?

WAR_Display_name oder wie das bei dir heisst


----------



## Krabat (20. Sep 2005)

ok, ich habs gefunden, danke. Habe auch festgestellt, daß die server-mappings fehlen, aber das entpacken des WARs mit WinRar und wieder hineinpacken, ruft leider trotz allem noch den gleichen Fehler hervor. Bin ein wenig sehr ratlos und weiß auch nicht, wieso die servlet-mappings nicht eingetragen wurden. Habe ich vielleicht einen Namen doppelt verwendet, der nur einmal vergeben werden darf?


----------



## Bleiglanz (20. Sep 2005)

ist irgendein zeugs vom deploytool, mach ein reload da drin (damit er das ganze neu einliest)

oder ändere das gleich mit dem deploytool


----------



## Krabat (20. Sep 2005)

ich verstehs nicht, habe ein neues WAR file zusammengestellt und erneut deployed und nun geht es. Ich glaube, es liegt irgendwie daran, daß man bestimmt Namen nicht 2x verwenden darf für verschiedene Dinge. Werde das morgen nochmal genau untersuchen und meine Ergebnisse dann posten.

Soweit danke Bleiglanz!


----------



## Krabat (21. Sep 2005)

ich ahn das nicht! Habe heute den gleichen Service nochmal erstellt (geänderte config.xml) und nu' haut alles hin. Nee, finde das echt eigenartig. Frage mich noch immer warum das deploytool gestern das Servlet-Mapping nicht eingefügt hat.  ???:L 
Weiß jemand woran das gelegen haben könnte (möchte den Fehler gerne verstehen, um nächstes mal davor gewappnet zu sein).

*update*
Ich versuche den Fehler zu reproduzieren, habe aber leider kein "Glück". Möglicherweise lag der Fehler darin, daß ich die _config-interface.xml_ geupdated habe, aber das WSDL file per wscompile nicht neu erzeugen lies!? Kann aber auch nicht so wirklich sein, da ich jetzt probeweise die _config-interface.xml_ im WAR File weggelassen habe und er auch ohne diese Informationen das WAR File erstellen und deployen kann.


----------



## Bleiglanz (21. Sep 2005)

kenn ich, irgendwie hat das deploytool einen eingebauten "Zwischenspeicher", der dafür sorgt dass änderungen nicht sofort zur Verfügung stehen

war aber bisher zu faul, das genauer herauszufinden


----------



## Krabat (21. Sep 2005)

Es wird immer wilder...
So, jetzt kann ich deployen und der J2EE-Compliance-Verifier meldet keine Fehler/Warnings mehr, aber wenn ich den client laufen lasse, steigt der mit einer Exception aus. Der client code ist echt nichtig, poste ihn aber vorsichtshalber trotzdem mal, denke aber der Fehler wird auf Serverseite zu suchen sein.

Client Code:

```
package staticstub;

import javax.xml.rpc.Stub; 
import de.qsgrimm.webservice.test.*;

/**
 * @author ak
 *
 */
public class HelloClient {
    private final static String ENDPOINT = 
    	"http://localhost:8080/webservice/pminfo";

    /**
     * @param args
     */
    public static void main(String[] args) {
    	System.out.println("Endpoint address = " + ENDPOINT);

        try {
            Stub stub = createProxy();

            stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,
                ENDPOINT);

            HelloIF hello = (HelloIF) stub;

            System.out.println(hello.sayHello("Duke!"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static Stub createProxy() {
        // Note: MyHelloService_Impl is implementation-specific.
        return (Stub) (new PMInfo_Impl().getHelloIFPort()); 
    }
}
```


config-wsdl.xml:

```
<?xml version="1.0" encoding="UTF-8"?>
<configuration 
 	xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
  <wsdl location="http://localhost:8080/webservice/pminfo?WSDL"
       packageName="de.qsgrimm.webservice.test"/>
</configuration>
```


Fehlermeldung:

```
Endpoint address = [url]http://localhost:8080/webservice/pminfo[/url]
javax.xml.rpc.soap.SOAPFaultException: JAXRPCSERVLET28: Anschlussinformationen fehlen
	at com.sun.xml.rpc.client.StreamingSender._raiseFault(StreamingSender.java:515)
	at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:294)
	at de.qsgrimm.webservice.test.HelloIF_Stub.sayHello(HelloIF_Stub.java:70)
	at staticstub.HelloClient.main(HelloClient.java:57)
```


AppServer LogFile Eintrag:
*[#|2005-09-21T11:08:58.092+0200|INFO|sun-appserver-pe8.1_02|javax.enterprise.system.tools.deployment|_ThreadID=32;|DPL5306:Servlet Web Service Endpoint [HelloIF] listening at address [http://SOEHNER:8080/webservice/HelloImpl]|#]

[#|2005-09-21T11:09:34.811+0200|SEVERE|sun-appserver-pe8.1_02|javax.enterprise.resource.webservices.rpc.server.http|_ThreadID=33;|JAXRPCSERVLET22: Kein Endpunkt angegeben|#]
*


----------



## Bleiglanz (21. Sep 2005)

komisch: ist die URL jetzt

http://SOEHNER:8080/webservice/HelloImpl

oder

http://localhost:8080/webservice/pminfo

?


----------



## Krabat (21. Sep 2005)

Bleiglanz hat gesagt.:
			
		

> komisch: ist die URL jetzt
> 
> http://SOEHNER:8080/webservice/HelloImpl
> 
> ...



Ich habe einen Alias mittels "pminfo" gesetzt, so daß "http://localhost:8080/webservice/pminfo?wsdl" das wsdl File zurückgibt. Soweit funktioniert es.


----------



## Krabat (21. Sep 2005)

Habe den Fehler ausfindig gemacht, bzw. die Infos von dieser Seite genutzt.
Kurz gesagt, der *Alias* und *Endpoint Address* müssen identisch sein. Zu finden sind sie unter dem deploytool links auf den "service name" (nicht WAR Datei Name) klicken und dann tab "Aliases" und "Endpoint" (Infos ganz unten) vergleichen, für alle, die den gleichen Fehler haben sollten.


----------

