Невозможно ввести названное Bean в класс javax.ws.rs, пока можно использовать @ejbJAVA

Программисты JAVA общаются здесь
Anonymous
Невозможно ввести названное Bean в класс javax.ws.rs, пока можно использовать @ejb

Сообщение Anonymous »

Я пытаюсь внедрить названный бон в класс, используя javax.ws.rs.* и получил результат:

Код: Выделить всё

javax.servlet.ServletException: A MultiException has 1 exceptions.  They are:
1. org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=UserBean,parent=NameCheckREST,qualifiers={},position=-1,optional=false,self=false,unqualified=null,903092946)
root cause

Так что я могу догадаться, что инъекция зависимости не удалась. После того, как я прокомментирую @Inject и связанные с ними методы, это работает. У меня вопрос, почему я не могу внедрить названные фасоли в класс REST Javax, в то время как мой учитель использует @EJB < /code> для инъекции EJB, и это удается. Вы можете обратиться к коду ниже: < /p> не удалось:

Код: Выделить всё

package restServices;
import java.text.DecimalFormat;

import javax.inject.Inject;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObjectBuilder;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import beans.UserBean;

@Path("checkname")
public class NameCheckREST {

@SuppressWarnings("unused")
@Context
private UriInfo context;

@Inject
private UserBean userBean;

/**
* Default constructor.
*/
public NameCheckREST() {
// TODO Auto-generated constructor stub
}

//    /**
//     * Retrieves representation of an instance of NameCheckREST
//     * @return an instance of String
//     */
//    @GET
//    @Produces("application/json")
//    public String getJson() {
//        // TODO return proper representation object
//        throw new UnsupportedOperationException();
//    }

/**
* Retrieves representation of an instance of HelloWorld
* @return an instance of String
*/
@GET
@Produces("text/html")
public String getHtml() {
// TODO return proper representation object
//DecimalFormat df = new DecimalFormat("0.00");
return "" + "Web resources for CMS"  + " ";
//throw new UnsupportedOperationException();
}

/**
* PUT method for updating or creating an instance of NameCheckREST
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("application/json")
public void putJson(String content) {
}

@POST
@Path("user")
@Consumes("application/x-www-form-urlencoded")
@Produces(MediaType.APPLICATION_JSON)
public JsonArray checkUsername(@FormParam("account") String account) {
JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
JsonObjectBuilder objectBuilder = Json.createObjectBuilder();
objectBuilder.add("account", account);

if(userBean.searchUserByAccount(account) == null) {
objectBuilder.add("exist", false);
}else {
objectBuilder.add("exist", true);
}
arrayBuilder.add(objectBuilder);
return arrayBuilder.build();
}
}
< /code>
с именем пользователя Bean: < /p>
package beans;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

import java.util.logging.Level;
import java.util.logging.Logger;

import entity.NormalUser;
//import entity.User;
import repository.UserRepository;

@Named(value = "userBean")
@SessionScoped
public class UserBean implements Serializable {

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

@EJB
UserRepository userRepository;

//default constructor
public UserBean() {
}

public List getAllUsers(){
try {

List users = userRepository.getAllUsers();
//System.out.print("users:" + users.size());
Logger.getLogger(UserBean.class.getName()).log(Level.SEVERE, "users:"  + users.size());
return users;
} catch(Exception ex) {
Logger.getLogger(UserBean.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}

public boolean addUser(NormalUser user) {
try {
userRepository.addUser(user);
return true;
}catch (Exception ex) {
Logger.getLogger(UserBean.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}

public boolean removeUser(String account) {
try {
userRepository.deleteUser(account);
return true;

}catch (Exception ex) {
Logger.getLogger(UserBean.class.getName()).log(Level.SEVERE, null, ex);

}
return false;
}

public boolean editUser(NormalUser user) {
try {
userRepository.updateUser(user);
return true;

}catch (Exception ex) {
Logger.getLogger(UserBean.class.getName()).log(Level.SEVERE, null, ex);

}
return false;
}

public NormalUser searchUserByAccount(String account) {
try {
NormalUser user = userRepository.searchUser(account);
return user;
}catch (Exception ex) {
Logger.getLogger(UserBean.class.getName()).log(Level.SEVERE, null, ex);

}
return null;
}

}
< /code>
@ejb Успех: < /p>
package helloworld;

import java.text.DecimalFormat;

import javax.ejb.EJB;
import javax.el.ELContext;
import javax.faces.context.FacesContext;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

import calculator.LoanBean;

@Path("greeting")
public class HelloWorld {

@SuppressWarnings("unused")
@Context
private UriInfo context;

@EJB
private NameStorageBean nameStorage;

@EJB
private LoanBean loanBean;
/**
* Default constructor.
*/
public HelloWorld() {
// TODO Auto-generated constructor stub
}

/**
* Retrieves representation of an instance of HelloWorld
* @return an instance of String
*/
@GET
@Produces("text/html")
public String getHtml() {
// TODO return proper representation object
DecimalFormat df = new DecimalFormat("0.00");
return "Hello " + nameStorage.getName() + ", the monthly payment is " + df.format(loanBean.calculate()) +"! ";
//throw new UnsupportedOperationException();
}

@POST
@Consumes("application/x-www-form-urlencoded")
public void setPostName( @FormParam("name") String content) {
nameStorage.setName(content);
}

@POST
@Path("loan")
@Consumes("application/json")
public void setPostLoan(Loan loan) {
loanBean.setPrinciple(loan.getPrinciple());
loanBean.setInterestRate(loan.getInterestRate());
loanBean.setNumberOfYears(loan.getNumberOfYears());
loanBean.setMonthlyPayment(loanBean.calculate());
//      ELContext context
//        = FacesContext.getCurrentInstance().getELContext();
//      WebServiceBean currentWebBean = (WebServiceBean) FacesContext.getCurrentInstance().getApplication()
//                .getELResolver().getValue(context, null, "webServiceBean");
//      currentWebBean.setMonthlyPayment(loanBean.calculate());

}
/**
* PUT method for updating or creating an instance of HelloWorld
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("text/html")
public void putHtml(String content) {
}

}
о web.xml :

Код: Выделить всё


CMS-war


javax.faces.PROJECT_STAGE
Development


javax.faces.FACELETS_SKIP_COMMENTS
true




Faces Servlet
javax.faces.webapp.FacesServlet
1


Faces Servlet
/faces/*



javax.ws.rs.core.Application
2


javax.ws.rs.core.Application
/webresources/*



faces/index.xhtml



AdminContstraint

WebResource
/faces/admin/*
GET
POST
DELETE
PUT
HEAD
OPTIONS
TRACE


Administrator
Admin




NormalContstraint

WebResource
/faces/normal/*
GET
POST
DELETE
PUT
HEAD
OPTIONS
TRACE


NormalUser
Normal




FORM
cms_security

/faces/login.xhtml
/faces/error.xhtml





30




Administrator
Admin



NormalUser
Normal


Так что я не обращал внимания, или я просто не могу внедрить с именем Bean, но ejb в класс Javax-rest.


Подробнее здесь: https://stackoverflow.com/questions/643 ... ld-be-used

Вернуться в «JAVA»