Remote Aufruf von EJB funktioniert nicht

denis7788

Bekanntes Mitglied
Hallo,

in einem JUnit Test rufe ich eine EJB auf. Beim ersten Aufruf funktioniert es, wenn ich aber darauf eine zweite Methode aufrufe, bekomme ich folgende Fehlermeldung:
Java:
java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:xxx, moduleName:xxx, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@10b483

Ich habe bisher nur Hinweise darauf gefunden, dass es an einem falschen JNDI Namen liegen könnte, oder dass die Anwendung nicht deployed ist. Allerdings ist der JNDI Name korrekt (denn der erste Aufruf funktioniert ja einwandfrei) und die Anwendung wurde deployed (das DB-Schema wurde erfolgreich erstellt+ich habe durch den JUnit Test ohne zweiten EJB Aufruf einige Einträge erstellt).
Folgende Jars habe ich im BuildPath des Testprojektes eingebunden:
1) CustomerManagement.Clint.jar (das EJB Modul, das ich exportiert habe)
2) hibernate-core-4.3.10.Final.jar (Verwendet vom WildflyServer)
3) jboss-client.jar (Verwendet vom WildflyServer)
4) JUnit 4 und JRE System Library

Was könnte noch ein Problem sein? (In der Testklasse CustomerManagementTests habe ich die Stelle, an der der Fehler Auftritt markiert)

Hier meine Klassen:

Customer:
Java:
@Entity
@NamedQuery(
name=Customer.QUERY_GETALL,
query="SELECT c FROM Customer c")
public class Customer implements Serializable{

/**
* 
*/
private static final long serialVersionUID = 1L;

publicstaticfinal String QUERY_GETALL="Customer.GetAll";

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
privateintid;

@NotNull
@Size(min=1, max=50)
private String firstName;
@NotNull
@Size(min=1, max=100)
private String lastName;
private Gender gender;
private Relationship relationship;
private Date birthday;

@OneToMany (cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER)
@JoinColumn(name="customerid")
private List<Address> addresses = new ArrayList<Address>();

@OneToMany (cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER)
@JoinColumn(name="customerid")
private List<Communication> communications = new ArrayList<Communication>();

@Version
private Timestamp lastChanged;

//Getter und Setter

CustomerDAO:
Java:
public interface CustomerDAO {

public Customer create(Customer customer);
public Customer update(Customer customer);
public void remove(int id);
public Customer getCustomer(int id);
public List<Customer> getAllCustomers();

}

CustomerBean:
Java:
@Stateless
@Remote(CustomerDAO.class)
public class CustomerBean implements CustomerDAO {

@PersistenceContext
private EntityManager em;

@Override
public Customer create(Customer customer) {
em.persist(customer);

//Customer returned will have the generated primary key + the version-value (in this case a timestamp)
returncustomer;
}

@Override
public Customer update(Customer customer) {
return em.merge(customer);
}

@Override
public void remove(int id) {
Customer toBeDeleted = getCustomer(id);
em.remove(toBeDeleted);
}

@Override
public Customer getCustomer(int id) {
return em.find(Customer.class, id);
}

@Override
public List<Customer> getAllCustomers() {
return
em.createNamedQuery(Customer.QUERY_GETALL, Customer.class)
.getResultList();
}

}

CustomerBEanTester:
Java:
public class CustomerBeanTester {

private CustomerDAO customerDAO;

@Before
public void setUp() throws Exception {

try {
final Hashtable<String, Comparable> jndiProperties =
new Hashtable<String, Comparable>();

jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.jboss.naming.remote.client.InitialContextFactory");

jndiProperties.put("jboss.naming.client.ejb.context", true);

jndiProperties.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
jndiProperties.put(Context.SECURITY_PRINCIPAL, "admin");
jndiProperties.put(Context.SECURITY_CREDENTIALS, "sicher");
final Context context = new InitialContext(jndiProperties);

final String lookupName = 
"CustomerManagement/CustomerManagementEJB/CustomerBean!com.cm.ejb.interfaces.CustomerDAO";

customerDAO = (CustomerDAO) context.lookup(lookupName);

} catch (Exception ex) {
throw ex;
}
}

@Test
public void test() {

assertNotNull(customerDAO);

//Customer anlegen
Customer customer = new Customer();
customer.setFirstName("Karsten16");
customer.setLastName("Müller");
customer.setGender(Gender.Male);

Calendar birthday = Calendar.getInstance();
birthday.set(1988, 7, 7);
customer.setBirthday(birthday.getTime());

//Adresse definieren
Address address = new Address();
address.setCity("Trier");
address.setCountry("Germany");
address.setStreet("Salvianstrasse");
address.setZip("54290");
address.setKind(Kind.Business);
customer.getAddresses().add(address);

//Email Adresse definieren
Communication communication = new Communication();
communication.setName("Geschäft");
communication.setValue("test@test.de");
communication.setCommunicationTyp(CommunicationType.Email);
communication.setKind(Kind.Business);
customer.getCommunications().add(communication);


Customer result = customerDAO.create(customer);
assertNotEquals(result.getId(),0);

//Kunden erneut abrufen - Hier tritt der Fehler auf
result = customerDAO.getCustomer(result.getId());

}
}
 

denis7788

Bekanntes Mitglied
Vielleicht hilft diese Ausgabe auch weiter. Unten ist erkennbar, das die Remote-Connection geschlossen wurde:
Java:
Okt 07, 2015 10:56:46 AM org.xnio.Xnio <clinit>
INFO: XNIO version 3.3.1.Final
Okt 07, 2015 10:56:46 AM org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.3.1.Final
Okt 07, 2015 10:56:46 AM org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 4.0.9.Final
Okt 07, 2015 10:56:47 AM org.jboss.ejb.client.remoting.VersionReceiver handleMessage
INFO: EJBCLIENT000017: Received server version 2 and marshalling strategies [river]
Okt 07, 2015 10:56:47 AM org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver associate
INFO: EJBCLIENT000013: Successful version handshake completed for receiver context EJBReceiverContext{clientContext=org.jboss.ejb.client.EJBClientContext@396f6598, receiver=Remoting connection EJB receiver [connection=Remoting connection <5076c986>,channel=jboss.ejb,nodename=deniss-mbp]} on channel Channel ID a99e0c16 (outbound) of Remoting connection 52feb982 to localhost/127.0.0.1:8080
Okt 07, 2015 10:56:47 AM org.jboss.ejb.client.EJBClient <clinit>
INFO: JBoss EJB Client version 2.1.1.Final
Okt 07, 2015 10:56:47 AM org.jboss.ejb.client.remoting.ChannelAssociation$ResponseReceiver handleEnd
INFO: EJBCLIENT000016: Channel Channel ID a99e0c16 (outbound) of Remoting connection 52feb982 to localhost/127.0.0.1:8080 can no longer process messages
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Live logging von Remote Allgemeines EE 1
J EJB / Interface / Class Annotationen / Statless & Stateful / remote & local Allgemeines EE 7
FINF_AW_Alex remote Glassfish Library unverträglichkeit Allgemeines EE 0
J SessionBean Remote Allgemeines EE 2
T Einstieg in J2EE: Remote auf Bean zugreifen Allgemeines EE 11
C JMS Remote Client Allgemeines EE 5
byte Remote Lazy Loading mit Spring und Hibernate Allgemeines EE 5
G Remote Referenz nicht freigeben. Allgemeines EE 6
M Servlet Methoden Aufruf im Servlet Allgemeines EE 10
OnDemand XHTML Aufruf verbieten? Allgemeines EE 4
S Aufruf eines EJBs aus einer nativen Java-Applikation Allgemeines EE 1
S [Design] Dynamischer EJB Aufruf von Servlet Allgemeines EE 3
F Session abgelaufen und direkter Aufruf Allgemeines EE 10
J Problem mit EJB Aufruf und DualCore Rechner Allgemeines EE 4
B tag lib aufruf falsch Allgemeines EE 7
G Aufruf des Garbage-Collectors Allgemeines EE 4
N Seiten aufruf in einer JSP Allgemeines EE 4
W Methoden Aufruf in der JSP funktioniert nicht. Allgemeines EE 4
M Fehler aufruf von Index.html Allgemeines EE 7
M Probleme bei Aufruf von JSPs in Unterverzeichnissen Allgemeines EE 2
S Kompilieren der JSP-Seiten ohne Aufruf Allgemeines EE 7
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
U @Inject funktioniert nicht Allgemeines EE 3
L JSF Primefaces breadcrumb - erstes Element funktioniert nicht Allgemeines EE 0
M JSP Ausgabe funktioniert nicht Allgemeines EE 4
N Tomcat funktioniert nach shutdown/startup nicht mehr korrekt Allgemeines EE 9
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
K JSF Test Anwendung ausführen funktioniert nicht Allgemeines EE 7
I Tomahawk funktioniert nicht Allgemeines EE 3
B Parameterübergane von Servlet an JSP funktioniert nicht ? Allgemeines EE 2
R Hibernate: many-to-many funktioniert noch nicht ganz Allgemeines EE 2
G WEB-INF/classpath funktioniert nicht für Dateien Allgemeines EE 2
R Java2WSDL aus Eclipse heraus funktioniert nicht Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben