As mentioned in the other thread have you added the conventions plug-in? The indicated error indicates a failure of Struts2 to be able to find what it needs so your posted source should not be at issue.
On Wed, Jul 19, 2017 at 3:13 PM, john lee <sh_thorn_b...@yahoo.com.invalid> wrote: > > Please help for the struts2 + rest service > > http://beta-dev/ecommerce/employee.xml > > > > > return the following error report > > Struts Problem Report > Struts has detected an unhandled exception: > | Messages: | > - com.thoughtworks.xstream.XStream > - com/thoughtworks/xstream/XStream > - java.lang.reflect.InvocationTargetException > - java.lang.RuntimeException: java.lang.reflect. > InvocationTargetException > - java.lang.RuntimeException: java.lang.RuntimeException: > java.lang.reflect.InvocationTargetException > - java.lang.RuntimeException: java.lang.RuntimeException: > java.lang.RuntimeException: java.lang.reflect.InvocationTargetException > | > | File: | org/apache/catalina/loader/WebappClassLoader.java | > | Line number: | 1,714 | > > > Stacktraces > java.lang.RuntimeException: java.lang.RuntimeException: > java.lang.RuntimeException: java.lang.RuntimeException: > java.lang.reflect.InvocationTargetException > com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject( > ContainerImpl.java:301) > com.opensymphony.xwork2.inject.ContainerImpl.inject( > ContainerImpl.java:492) > com.opensymphony.xwork2.inject.ContainerImpl$6.call( > ContainerImpl.java:530) > > > source code: > cat Employee*.java > package xyz; > import xyz.*; > import java.util.Map; > import org.apache.struts2.rest.DefaultHttpHeaders;import > org.apache.struts2.rest.HttpHeaders;import > com.opensymphony.xwork2.ModelDriven;public > class EmployeeController implements ModelDriven<Object>{ private > static final long serialVersionUID = 1L; private String id; > private Object model; private EmployeeRepository employeeRepository > = new EmployeeRepository(); private static Map<String,Employee> > map; { map = employeeRepository.findAllEmployee(); > } public HttpHeaders index() { model = map; > return new DefaultHttpHeaders("index").disableCaching(); > } public String add(){ Integer empId = > Integer.parseInt(id); Employee emp = new > Employee(empId,"Ramesh", "PQR"); model = emp; > return "SUCCESS"; } public String getId() { > return id; } public void setId(String id) { > model = employeeRepository.getEmployeeById(id); this.id = > id; } @Override public Object getModel() { > return model; }} > package xyz; > import java.util.*;import xyz.*; > > public class Employee { private Integer id; private String > name; private String company; public Employee(Integer id, > String name, String company){ this.id =id; > this.name = name; this.company = company; } > public Integer getId() { return id; } public > void setId(Integer id) { this.id = id; } > public String getName() { return name; } > public void setName(String name) { this.name = name; > } public String getCompany() { return company; > } public void setCompany(String company) { > this.company = company; }} package xyz; > > import java.util.*;import java.sql.Timestamp;import xyz.*; > import java.util.HashMap;import java.util.Map; > public class EmployeeRepository { private static > Map<String,Employee> map = new HashMap<String,Employee>(); public > EmployeeRepository(){ map.put("111", new Employee(111, > "Ram", "ABC")); map.put("222", new Employee(222, "Shyam", > "EFG")); map.put("333", new Employee(333, "Mohan", "XYZ")); > } public Employee getEmployeeById(String id){ > return map.get(id); } public Map<String,Employee> > findAllEmployee(){ return map; }} > > my configuration for struts.xml > > > <include file="struts-default.xml"/> > > <!-- rest and regular coexist--> > > <constant name="struts.action.extension" value="xhtml,,xml,json,action" > /> > > > > > <constant name="struts.mapper.class" value="rest" /> > > > > > <constant name="struts.mapper.class" value="org.apache.struts2. > dispatcher.mapper.PrefixBasedActionMapper" /> > > <constant name="struts.mapper.prefixMapping" > value="/rest:rest,:struts"/> > > <constant name="struts.convention.action.suffix" value="Controller"/> > > <constant name="struts.convention.action.mapAllMatches" value="true"/> > > <constant name="struts.convention.default.parent.package" > value="rest-default"/> > > <constant name="struts.convention.package.locators" value="example"/> > > > > > -- Sent from my C64 using a 300 baud modem